在Javascript中使用setTimeout的简单计时器

时间:2011-11-06 02:22:40

标签: javascript

我正在尝试在javascript中创建一个简单的计时器,只需按一下按钮就可以从5倒数到0。这是我的按钮onclick的功能。我被卡住了,因为它没有倒计时。任何关于我的逻辑错误的提示都会得到证实。感谢。

function countdown(num) {
    if (num >= 0) {
        document.getElementById("counter").innerHTML=num;
        timer=setTimeout("countdown()", 1000);
        num--;
    }
    else 
        clearTimeout(timer);
}

2 个答案:

答案 0 :(得分:6)

主要问题是您对countdown的评估,因为字符串未正确传递num。请尝试使用函数表达式。

function countdown(num) {
    if (num >= 0) {
        document.getElementById("counter").innerHTML=num;
        setTimeout(function () { countdown(num - 1) }, 1000);
    }
}

此外,不需要clearTimeout或全局timer值。

答案 1 :(得分:1)

这个怎么样?

button.onclick = function () {
    var n = 5;

    (function loop() {
        label.textContent = n;

        if ( n > 0 ) {
            n -= 1;
            setTimeout( loop, 1000 );
        }
    })();
};

现场演示: http://jsfiddle.net/YhBx6/1/