Javascript 设置间隔计数器问题

Javascript 设置间隔计数器问题,javascript,setinterval,Javascript,Setinterval,我有这个小剧本。我的问题是,当我点击开始按钮时,计数正常开始,但如果我再次点击它,计数器开始表现出奇怪的行为。如何避免此问题并在每次单击按钮时重新启动计数器 $(“.c1”)。单击(函数(e){ 设a=0; setInterval(function(){$(“#timer”).text(a);a++},500); }) .card{font size:25px;} 启动计时器 0之所以“行为怪异”,是因为您正在启动一个秒的独立计时器,所以现在两个计时器都在运行,每个计时器都在元素中放置自

我有这个小剧本。我的问题是,当我点击开始按钮时,计数正常开始,但如果我再次点击它,计数器开始表现出奇怪的行为。如何避免此问题并在每次单击按钮时重新启动计数器

$(“.c1”)。单击(函数(e){
设a=0;
setInterval(function(){$(“#timer”).text(a);a++},500);
})
.card{font size:25px;}

启动计时器


0
之所以“行为怪异”,是因为您正在启动一个秒的独立计时器,所以现在两个计时器都在运行,每个计时器都在元素中放置自己的
a
。您需要记住上一个计时器的句柄(setInterval的返回值)并取消它(通过
clearInterval
):

let handle=0;
$(“.c1”)。单击(函数(e){
设a=0;
清除间隔(句柄)
handle=setInterval(函数(){
$(“#计时器”).text(a);
a++;
}, 500);
})
.card{
字体大小:25px;
}

启动计时器


0
之所以“行为怪异”,是因为您正在启动一个秒的独立计时器,所以现在两个计时器都在运行,每个计时器都在元素中放置自己的
a
。您需要记住上一个计时器的句柄(setInterval的返回值)并取消它(通过
clearInterval
):

let handle=0;
$(“.c1”)。单击(函数(e){
设a=0;
清除间隔(句柄)
handle=setInterval(函数(){
$(“#计时器”).text(a);
a++;
}, 500);
})
.card{
字体大小:25px;
}

启动计时器



0
在开始新的间隔之前,您应该重置间隔

let间隔;
$(“.c1”)。单击(函数(e){
设a=0;
if(interval)clearTimeout(interval);
interval=setInterval(函数(){$(“#计时器”).text(a);a++},500);
})
.card{font size:25px;}

启动计时器



0
在开始新的间隔之前,您应该重置间隔

let间隔;
$(“.c1”)。单击(函数(e){
设a=0;
if(interval)clearTimeout(interval);
interval=setInterval(函数(){$(“#计时器”).text(a);a++},500);
})
.card{font size:25px;}

启动计时器



0
在开始新的间隔之前,必须清除间隔。否则,有两件事(或更多)在增加
a

要清除间隔,只需对
setInterval
的结果调用
clearInterval

let间隔;
$(“.c1”)。单击(函数(e){
设a=0;
间隔时间;
interval=setInterval(函数(){$(“#计时器”).text(a);a++},500);
});
.card{font size:25px;}

启动计时器



0
在开始新的间隔之前,必须清除间隔。否则,有两件事(或更多)在增加
a

要清除间隔,只需对
setInterval
的结果调用
clearInterval

let间隔;
$(“.c1”)。单击(函数(e){
设a=0;
间隔时间;
interval=setInterval(函数(){$(“#计时器”).text(a);a++},500);
});
.card{font size:25px;}

启动计时器



0
每次单击时,您将启动另一个设置间隔

解决方案

  • 当必须从头开始计数时-使用
    clearInterval
  • 要禁用操作,如果我们想启动计数器一次-使用
    .attr(“disabled”,true)

    //1
    变量时间=0
    $(“.c1”)。单击(函数(e){
    clearInterval(时间);//如果运行间隔,则停止
    设a=0;
    time=setInterval(function(){$(“#timer”).text(a);a++},500);
    })
    //2
    $(“.c2”)。单击(函数(e){
    设a=0;
    setInterval(function(){$(“#timer2”).text(a);a++},500);
    $(“.c2”).attr(“禁用”,真);
    })
    .card{font size:25px;}
    
    启动计时器1
    

    0

    启动计时器2


    0
    每次单击时,您将启动另一个设置间隔

    解决方案

  • 当必须从头开始计数时-使用
    clearInterval
  • 要禁用操作,如果我们想启动计数器一次-使用
    .attr(“disabled”,true)

    //1
    变量时间=0
    $(“.c1”)。单击(函数(e){
    clearInterval(时间);//如果运行间隔,则停止
    设a=0;
    time=setInterval(function(){$(“#timer”).text(a);a++},500);
    })
    //2
    $(“.c2”)。单击(函数(e){
    设a=0;
    setInterval(function(){$(“#timer2”).text(a);a++},500);
    $(“.c2”).attr(“禁用”,真);
    })
    .card{font size:25px;}
    
    启动计时器1
    

    0

    启动计时器2


    0
    谢谢你的回答好的先生。谢谢你的回答好的先生。