setTimeout计数器无法正常工作

时间:2013-03-04 22:25:43

标签: javascript settimeout

此setTimeout函数仅运行一次然后停止。我没有错误,所以我不知道为什么会这样。

count = 100;

counter = setTimeout('timer()', 100);

$('#reset').click(function() {
    count = 100;
    counter = setTimeout('timer()', 100);
})

function timer() {
    if (count <= 0) {
        clearTimeout(counter);
        alert('done');
    }
    $('#counter').html(count);
    count -= 1;
}

我尝试了一些setTimeout函数的不同表达式,包括setTimeout(timer(),100)setTimeout(function() { timer() }, 100)

6 个答案:

答案 0 :(得分:2)

你应该使用setInterval()重复一个函数调用,而不是setTimeout(),它只执行一次。另外,请勿在函数名称引用中使用()

var count = 100;

var counter = setInterval('timer', 100);

$('#reset').click(function() {
    count = 100;
    counter = setInterval('timer', 100);
})

function timer() {
    if (count <= 0) {
        clearInterval(counter);
        alert('done');
    }
    $('#counter').html(count);
    count -= 1;
}

答案 1 :(得分:0)

setTimeout正常工作但不是您要找的。请尝试setIntervalsetInteval(function, delay)

答案 2 :(得分:0)

setTimeout() - 在等待指定的毫秒数后执行一个一次的函数。

您可能希望以指定的时间间隔一次又一次地执行setInterval()执行函数。

答案 3 :(得分:0)

是的,这就是setTimeout的作用。它运行一次代码。

您希望使用setInterval方法重复运行代码。

答案 4 :(得分:0)

不确定您要实现的目标,而且我不理解 $('#reset')。单击(等)构造。这些是JQuery吗?

但是,为什么不使用setInterval()?然后在满足条件时清除间隔计时器?

答案 5 :(得分:0)

var count = 10;

function counter() {

    if ( count > 0 )
    {
        --count;
        var t2 = setTimeout( counter, 1000 );

        document.querySelector("#demo").innerHTML = count;
    }
    else
    {
        clearTimeout(t2);

        document.querySelector("#demo").innerHTML = "Done";
    }
}

var countdown_timeout = counter();
<p>Count: <b><span id="demo"></span></b></p>