Javascript 点击按钮';t堆栈它触发的函数,但它确实

Javascript 点击按钮';t堆栈它触发的函数,但它确实,javascript,Javascript,我正在用Javascript制作一个计时器,它已经很好地工作了。唯一的问题是当我不断点击 “开始”按钮它保持计数功能,并将以越来越高的速度计数。尝试了多种方法来阻止它,但我自己却无能为力 JS: var startknop=document.getElementById(“开始”); var stopknop=document.getElementById(“stop”); var小时=0; var min=0; var-sec=0; startknop.onclick=函数() { inter

我正在用Javascript制作一个计时器,它已经很好地工作了。唯一的问题是当我不断点击 “开始”按钮它保持计数功能,并将以越来越高的速度计数。尝试了多种方法来阻止它,但我自己却无能为力

JS:

var startknop=document.getElementById(“开始”);
var stopknop=document.getElementById(“stop”);
var小时=0;
var min=0;
var-sec=0;
startknop.onclick=函数()
{
intervalId=setInterval(计数,1000);
}
stopkop.onclick=函数()
{
clearInterval(intervalId);
}
counter.innerHTML=小时+0:+min+0:+sec+0;
函数计数(){
sec++;

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

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

当计时器完成时,设置为运行false。

这主要起作用,只需将
开始=false;
(将var更改为开始)添加到其他按钮,谢谢!
var running = false;
startknop.onclick = function()
{
    if(!running)
    {
        running=true;
        intervalId = setInterval(count, 1000);
    }
}