0

重複の可能性:
JavascriptforループとsetTimeoutの問題

このループで、#leftValue内のhtmlを0からleftValueに変更し、0から開始して、leftValue値まで上昇させたいのですが、代わりに、#leftvalue内のhtmlを0から開始せずにleftValueの値に変更します。

私が間違っていることは何ですか?

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

2 に答える 2

6

すべてのタイマーが同時に登録され、1000ms 後に実行されます (したがって、すべて同時に実行されます)。たとえば、タイムアウトを設定することができますnum * 1000。そうすれば、特定の出現時間はそれnumに依存しnumます。

于 2012-07-25T19:58:29.280 に答える
1

はい、あなたのループは、約 1000 ミリ秒ですべて開始される一連の setTimeouts を起動しています。

setInterval代わりに、値を段階的に変更できる (つまり、単純なアニメーション)を使用することをお勧めします。

于 2012-07-25T19:58:53.837 に答える