2011-06-05 254 views
0

需要點擊兩次Javascript onclick函數才能運行。我需要它在第一次點擊時運行,這是我的問題。我已經搜索了兩天,但沒有找到有用的答覆或我的理解。Javascript onclick需要點擊兩次才能運行功能

對JavaScript的代碼可以在這裏找到:http://enji.se/windows8/js/script.js

而且,我想它的工作網站:http://enji.se/windows8/

這是一個Windows 8的外觀的網站,我試圖讓。它只會在谷歌Chrome和上高於1265x820的分辨率中正確顯示,將是真棒,在前進/恩濟高於1590x920

感謝決議

解決

+0

我不確定你的問題是什麼,但在firefox4中,我點擊的所有東西都正確回覆了我的第一次點擊。你能更準確地解決你的問題嗎? – Sec 2011-06-05 21:56:40

回答

7

的問題是您的單擊處理boxBegin內 - 收到click事件,並傳遞給你的方法正確的第一次點擊,但裏面boxBegin你對box.style.display值轉換行爲 - 中IE9這是最初的「」,它觸發你的密碼而不是你想要的開放代碼。

更改boxBegin到:

function boxBegin() { 
    var box = document.getElementById('boxBegin'); 
    if (!box.style.display || box.style.display == "none") { 
     box.style.display = "block"; 
    } 
    else { 
     box.style.display = "none"; 
    } 
} 
+0

哦,非常感謝!有效!:)你可能猜到,我在JavaScript中很漂亮n00b:P – 2011-06-05 22:29:41

+0

你介意解釋爲什麼這樣不起作用嗎? (我的歉意 - js的第一天)我使用的是Chrome,並且必須使用您的答案才能使代碼正常工作。 – Rachael 2013-12-19 23:59:15

-1

據我所知, onclick註冊單擊?

如果onclick需要雙擊它可能是一個瀏覽器特定的問題。

同樣來自MDC docs

當 用戶點擊一個元素上的點擊事件被擡起。點擊 事件將發生在mousedown 和mouseup事件之後。

Also: simple test case @ JS Fiddle

1

我GOOGLE了這個時候我來到了同樣的問題。

我正在檢查是否window.location.hash是一個確定的值,然後相應地設置我的菜單選項卡。

對我來說,解決方案就像運行10毫秒延遲功能一樣簡單,然後運行我的主要功能。

對我來說,問題來自於確切同時針對檢查變化的改動是,在此之前,而不是之後的腳本來了,但在同一時間。這讓我不得不雙擊它才能再次更改,並讓該功能第二次注意到更改。

請記住,當事情似乎沒有註冊更改時,即使運行5毫秒延遲腳本也會更容易。這一次又一次幫助我

相關問題