Re: [問題] setTimeout與迴圈的問題
※ 引述《iamshuichi (vincent)》之銘言:
: 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毫秒
: 再同時執行前面的三個函數
: 如果想達到我的目的
: 不知道該怎麼寫呢?
for (var i=0; i<3; i++) {
setTimeout("audioPlay[i]", 500);
}
上面這樣寫是不行的
請改成下面這樣
for (var i=0;i<3; i++) {
(function (index) { //加包的一層
setTimeout(function () {
audioPlay[index];
}, 500);
})(i); //帶入迴圈的 i 值,會變成這個加包的function,變成 index 放入
}
這樣寫就不用改太多了 :)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.134.48.253
※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1479969644.A.5DD.html
推
11/24 14:53, , 1F
11/24 14:53, 1F
→
11/24 15:08, , 2F
11/24 15:08, 2F
→
11/24 16:33, , 3F
11/24 16:33, 3F
→
11/24 16:42, , 4F
11/24 16:42, 4F
→
11/24 21:44, , 5F
11/24 21:44, 5F
討論串 (同標題文章)
Ajax 近期熱門文章
PTT數位生活區 即時熱門文章