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