1
var i = 3400;

function progress() {
    i = 34000;
    window.setInterval(function () {
        i = i - 100;
        document.getElementById("progress").firstChild.data = i;
    }, 100);
}

このコードはますます高速になっています。関数の進行状況は 3 秒ごとに呼び出されますが、イベント ベースであるため、呼び出されたものを変更できません。約10回の電話の後、私は否定的になっています!

4

3 に答える 3

3

うーん....

使用禁止setInterval

あなたはおそらく使いたいsetTimeout

于 2012-06-26T15:01:21.463 に答える
1

進行状況は 3 秒ごとに呼び出されるため、新しい間隔が繰り返し作成されるのを避ける必要があります。を使用clearTimeoutすると、進行状況を呼び出すたびにタイマーがリセットされます。ただし、何を達成したいのか正確にわからないと、正確な答えを提供することは困難です。

var timeout;

function counter(count) {

    document.getElementById("progress").firstChild.data = count;

    if (count >= 0) {
        timeout = window.setTimeout(function() {
            counter(count-100);
        }, 100);
    }
}

function progress() {
    window.clearTimeout(timeout);
    counter(3400);
}
于 2012-06-26T15:19:42.867 に答える
0

これを試して

var i = 3400;

function progress() {
     i = i - 100;
     document.getElementById("progress").firstChild.data = i;
     window.setTimeout('progress();', 100);
}
于 2012-06-26T15:04:35.203 に答える