【问题标题】:What is wrong with this for loop & timer? [duplicate]这个 for 循环和计时器有什么问题? [复制]
【发布时间】:2012-07-25 19:55:44
【问题描述】:

可能重复:
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);
}

【问题讨论】:

  • 我相信这是因为我们的 for 循环不依赖于 setTimeout,所以它看起来像是跳过了 0 到 leftValue...值,而实际上它正在生成它们,但超时是'没有效果..

标签: javascript for-loop settimeout


【解决方案1】:

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

【讨论】:

  • 没错!谢谢大佬!!!
【解决方案2】:

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

您可能想改用setInterval,它可以逐步更改值(即简单动画)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-27
    • 2011-02-06
    • 1970-01-01
    相关资源
    最近更新 更多