[問題] 奇妙的setTimeout() 一次執行多個func …
這個問題,我已經疑惑了很久。
常常有需要一次執行多個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
06/12 22:14, 1F
→
06/13 00:05, , 2F
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
討論串 (同標題文章)
完整討論串 (本文為第 1 之 3 篇):
Ajax 近期熱門文章
PTT數位生活區 即時熱門文章