0

可能重复:
Javascript for loop 和 setTimeout 问题

我希望这个循环将#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);
}
4

2 回答 2

6

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

于 2012-07-25T19:58:29.280 回答
1

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

您可能想setInterval改用它,它可以逐渐改变一个值(即简单的动画)。

于 2012-07-25T19:58:53.837 回答