我有以下代码,我试图使用FOR loop
简单地计数到十次通过每次迭代我想使用jQuery
来更新值为i
的div元素
for (i=0;i<=10;i++){
setTimeout(function(){
$(".test").html(i);
},10000);
}
问题是,循环将执行,直到完成后才会显示任何内容,这只是数字10。
有没有办法达到我的需要?
感谢
答案 0 :(得分:8)
由于封闭效果,您的代码无法正常工作。它通常通过创建另一个在创建后立即调用的匿名函数来解决:
for (i=0;i <= 10;i++){
(function(i) {
setTimeout(function(){
$(".test").html(i);
}, i * 1000);
})(i);
}
答案 1 :(得分:3)
var i = 0,
T =setInterval(function(){
i < 10 ? $(".test").html(++i) : clearInterval(T);
},1000);
$(".test").html(i);
答案 2 :(得分:2)
请尝试使用setInterval()
:
var i = 0;
var timer = setInterval(function() {
$('.test').html(i);
i++;
if(i > 10) {
clearInterval(timer);
}
}, 10000);
您的当前循环将尽可能快地循环,并在调用循环后大约10秒内设置10次超时。 setInterval()
所做的是每隔10秒调用传递给它的函数中的代码,实际上是延迟循环。
如果if()
通过清除变量,则i > 10
语句结束时{{1}}语句将停止发生的间隔。
我已经分配了你的JSFiddle here,等待时间为100毫秒,而不是10秒用于测试目的。