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 回答