简单的问题......
for (var i = 0; i < 5; i++) {
setTimeout(function () { alert(i) }, 3000);
}
如何使用i的确切值提醒5次。
它只给出“5”5次。
我需要它的结果 0 1 2 3 4
答案 0 :(得分:2)
使用closure使变量的值保持在立即调用的函数的新范围内
for (var i = 0; i < 5; i++) {
(function(j) {
setTimeout(function () { alert(j) }, 3000);
}(i));
}
setTimout是异步的,所以当它执行循环时很久就完成了,并且i
的值已经更改为5
,所以你需要将其锁定。
答案 1 :(得分:0)
您可以使用setInterval
替代setTimeout
尝试,
var xCnt = 0;
var xInterval = setInterval(function()
{
xCnt +=1;
alert(xCnt);
if(xCnt == 5)
{
clearInterval(xInterval);
}
}, 3000);