[問題] 奇妙的setTimeout() 一次執行多個func …

看板Ajax作者 (for pete's sake)時間16年前 (2009/06/12 20:21), 編輯推噓1(103)
留言4則, 3人參與, 最新討論串1/3 (看更多)
這個問題,我已經疑惑了很久。 常常有需要一次執行多個function() 比如說window.onload後 一次做多個動作 想當然所有的function一次寫完,可是往往第二個function之後的,沒有作用。 document.getElementById('banner').onclick=goHome;//有用 document.getElementById('banner2').onclick=goHome;//沒用 神奇的是,同樣的code,加上setTimeout就可以了。 setTimeout("document.getElementById('banner').onclick=goHome",0)//有用 setTimeout("document.getElementById('banner2').onclick=goHome",0)//有用 通常millsec我會隨便設個100,200,但上例用0也行。 我不知道為什麼,但這樣做就可以work了! 再一個例子。 這樣常常不行。 charlie(); wake_up(); go_go(); shoe_shoe(); 這樣就可以。 setTimeout(charlie,100); setTimeout(wake_up,500); setTimeout(go_go,800); setTimeout(shoe_shoe,900); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.40.183

06/12 22:14, , 1F
順序不對吧. 檢查你的 js 是否在 HTML 載入完成以前就執行了
06/12 22:14, 1F

06/13 00:05, , 2F
應該都是window.onload之後的事件(通常是使用者觸發的)了
06/13 00:05, 2F
重點在「多個」,一個一個來都沒問題的。第一個一般是沒問題。 例一 test1();//有用 test2();//沒用 test3();//沒用 例二 test2();//有用 test1();//沒用 test3();//沒用 例三 test3();//有用 test2();//沒用 test1();//沒用 看出來了嗎?只要擺在第一個,就可以正確的執行。第二個、第三個則不一定。 我懷疑是瀏覽器的安全性設定所導致。 當然也可能是我搞錯了。不過這問題我滿常遇到的。 ============================ 暫時沒事了 ================================ 我自己寫了小範例,試不出來。不過我大概知道其中一個問題了。 當某id不存在,仍然去get它,會發生錯誤,導致接下來的code都沒作用。 document.getElementById('a').onclick=goHome;//發生錯誤 document.getElementById('b').onclick=goHome;//沒用 document.getElementById('a').onclick=goHome;//沒用 document.getElementById('b').onclick=goHome;//沒用 <div id="b" class="word">囉</div> <div id="c" class="word">世</div> <div id="d" class="word">界</div> ※ 編輯: tomin 來自: 122.116.40.183 (06/13 01:00)

06/13 16:09, , 3F
.....................
06/13 16:09, 3F

06/13 16:09, , 4F
這不是直譯的語言嗎
06/13 16:09, 4F
文章代碼(AID): #1ACaXdJn (Ajax)
文章代碼(AID): #1ACaXdJn (Ajax)