按钮单击不应该堆叠它触发的功能,但确实如此

时间:2014-12-03 08:05:13

标签: javascript

我在Javascript中制作一个已经运作良好的计时器唯一的问题就是当我一直打到时 "开始"按钮它保持堆叠计数功能,并将以越来越高的速度计数。尝试过多种方法来阻止它,但无法管理自己。

JS:

var startknop = document.getElementById("start");
var stopknop = document.getElementById("stop");
var hour = 0;
var min = 0;
var sec = 0;
startknop.onclick = function()
{
        intervalId = setInterval(count, 1000);
}
stopknop.onclick = function()
{
    clearInterval(intervalId);

}

    counter.innerHTML = hour + "0:" + min + "0:" + sec + "0";

    function count() {

        sec++;
        if(sec <= 9)
        {
            var seco = "0" + sec;
        }
        else
        {
            seco = sec;
        }
        if(min <= 9)
        {
            var mino = "0" + min;

        }
        else
        {
            mino = sec;
        }
        if(hour <= 9)
        {
            var houro = "0" + hour;
        }
        else
        {
            houro = hour;
        }
        if(sec == 60){
            sec = 0;
            min += 1;
        }
        if(min == 60){
            min = 0;
            hour += 1;
        }
    counter.innerHTML = houro + ":" + mino + ":" + seco;
}

2 个答案:

答案 0 :(得分:0)

使用布尔值将setInterval包装在if块中以检查是否已初始化。您正在启动多个计时器,因此stop仅停止分配给全局变量的最后一个计时器。您还可以将intervalId设置为-1,并检查它是否为&gt; 0,并在clearInterval调用后将其设置回-1。

答案 1 :(得分:0)

var running = false;
startknop.onclick = function()
{
    if(!running)
    {
        running=true;
        intervalId = setInterval(count, 1000);
    }
}

当计时器结束时设置为运行false。