每次运行后,Javascript倒计时变得越来越快

时间:2012-06-26 14:59:44

标签: javascript firefox google-chrome time timer

var i = 3400;

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

此代码越来越快。函数进度每隔3秒调用一次,但我无法更改它的调用,因为它是基于事件的。大约10次通话后,我变得消极!

3 个答案:

答案 0 :(得分:3)

...嗯

请勿使用setInterval

您可能想要使用setTimeout

答案 1 :(得分: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);
}

答案 2 :(得分:0)

试试这个

var i = 3400;

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