【发布时间】:2013-12-31 13:27:02
【问题描述】:
简单的问题...
for (var i = 0; i < 5; i++) {
setTimeout(function () { alert(i) }, 3000);
}
如何用 i 的精确值警告 5 次。
它只给出 5 次“5”。
我需要它的结果 0 1 2 3 4
【问题讨论】:
标签: javascript jquery html
简单的问题...
for (var i = 0; i < 5; i++) {
setTimeout(function () { alert(i) }, 3000);
}
如何用 i 的精确值警告 5 次。
它只给出 5 次“5”。
我需要它的结果 0 1 2 3 4
【问题讨论】:
标签: javascript jquery html
使用closure 将变量的值保持在立即调用函数的新范围内
for (var i = 0; i < 5; i++) {
(function(j) {
setTimeout(function () { alert(j) }, 3000);
}(i));
}
setTimout 是异步的,所以到它执行的时候循环早就完成了,i 的值已经变成5,所以你需要锁定它。
【讨论】:
您可以使用setInterval 替代setTimeout
试试,
var xCnt = 0;
var xInterval = setInterval(function()
{
xCnt +=1;
alert(xCnt);
if(xCnt == 5)
{
clearInterval(xInterval);
}
}, 3000);
【讨论】: