PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
Ajax
[問題] setTimeout與迴圈的問題
作者:
iamshuichi
(vincent)
2016-11-24 00:15:18
audioPlay=[audio1.play(), audio2.play(), audio3.play();
time=[0, 500, 1000];
for (var i=0; i<3; i++) {
setTimeout("audioPlay[i]", time[i]);
}
上面這段程式,我希望audio1播完之後
等待500毫秒之後播audio2
再等待500毫秒後播audio3
但是失敗了,我猜迴圈大概不能這樣寫吧!
於是我修改了一下
for (var i=0; i<3; i++) {
setTimeout("audioPlay[i]", 500);
}
結果還是不行,三個聲音同時出來
看來JavaScript是先等500毫秒
再同時執行前面的三個函數
如果想達到我的目的
不知道該怎麼寫呢?
作者: ninetyeight (98NINETYEIGHT)
2016-11-24 00:29:00
audioPlay=[audio1, audio2, audio3]setTimeout(function(){audioPlay[i].play()},time[i
作者:
youtuuube000
(小孩)
2016-11-24 04:02:00
改成setTimeout(audioPlay[i], time[i]); 應該可行因為""裡面是字串 因此i是字元 不會隨著for的i改變
作者: TETZ (你今天宅了嗎?)
2016-11-24 04:13:00
我記得setTimeout+for loop的話要用IIFE不然i都會是一樣的
https://goo.gl/kAXLdD
應該說你第一個解法要搭配IIFE第二個的話可以在setTimeout裡另外加兩個setTimeout來跑?啊仔細一看前面的連結跟這題沒什麼關
https://goo.gl/9YDyp1
這個比較清楚因為當你執行setTimeout時那些i已經變成2了js的變數是跟著記憶體的address除非你另外assign一個變數去存
作者:
xdraculax
(首席怪叔叔)
2016-11-24 09:47:00
最早的錯誤是組成陣列時已播放,另外i 的問題可改 setTimeout(audoPlay[i].play, time[i])
作者:
iamshuichi
(vincent)
2016-11-24 21:44:00
感謝幾位大大的指導,我研究看看!
繼續閱讀
[問題] 如何解決在Firefox及Safari的「閃爍問題」?
red0whale
[問題] 怎麼在google map API v3上畫出扇形
jimmy60204
[問題] IE11 render css 裡的圖會慢一點出現
icemango
[node] express.listen 可以從別台電腦連嘛
bjk
[問題] 有關ReactJS state的問題
hiphopadd7
[問題] 關於 client site 資安問題
shiningboy
[問題] jquery對於select下拉是選單預設動作
bill0205
[問題] 弱弱的問個setInterval的問題
iamshuichi
[問題] gitbook build 發生錯誤
yshihyu
[問題] three.js & canvas問題
gintama5566
Links
booklink
Contact Us: admin [ a t ] ucptt.com