这个for循环&有什么问题?计时器?

时间:2012-07-25 19:55:44

标签: javascript for-loop settimeout

  

可能重复:
  Javascript for loop and setTimeout issue

我希望这个循环将#leftValue里面的html从0更改为leftValue,从0开始直到leftValue值 - 但是它将#leftvalue里面的html更改为leftValue的值,而不是从0开始。

知道我做错了什么?

for (i=0; i<leftValue; i++)
{
    changeLeft(i);
}
function changeLeft(num)
{
    var leftTimer = setTimeout(function(){$('#leftValue').html(num+'%')},1000);
}

2 个答案:

答案 0 :(得分:6)

所有计时器都是同时注册的,并且会在1000毫秒后运行(因此也会同时运行)。您可以将超时设置为例如num * 1000。这样,某个num显示的时间取决于num

答案 1 :(得分:1)

是的,你的循环正在触发一堆setTimeouts,它们都将在1000毫秒左右开始。

您可能希望使用setInterval代替,这可以逐步更改值(即简单动画)。