为什么clearInterval()函数没有停止javascript计时器?

为什么clearInterval()函数没有停止javascript计时器?,javascript,jquery,Javascript,Jquery,我正在尝试创建一个基本的Pomotoro时钟,我在开始时就卡住了,计时器没有停止达到0,我的代码哪里有问题 $(文档).ready(函数(){ var targetTime,有效期内; $('button')。在('click',function()上{ targetTime=Date.now()+(1*60*1000); intervalID=设置间隔(计时器,1000,targetTime,intervalID); }); //setInterval函数的计时器回调 功能计时器(targe

我正在尝试创建一个基本的Pomotoro时钟,我在开始时就卡住了,计时器没有停止达到0,我的代码哪里有问题

$(文档).ready(函数(){
var targetTime,有效期内;
$('button')。在('click',function()上{
targetTime=Date.now()+(1*60*1000);
intervalID=设置间隔(计时器,1000,targetTime,intervalID);
});
//setInterval函数的计时器回调
功能计时器(targetTime,intervalID){
var secondsLeft=Math.ceil((targetTime-Date.now())/1000);
$('h1').text(secondsLeft);

如果(secondsLeft尝试使用
targetTime,intervalID
作为全局变量,而不是传递它

像这样试试

$(文档).ready(函数(){
var targetTime,有效期内;
$('button')。在('click',function()上{
clearInterval(intervalID);
targetTime=Date.now()+(1*60*1000);
intervalID=设置间隔(计时器,1000);
});
//setInterval函数的计时器回调
函数计时器(){
var secondsLeft=Math.ceil((targetTime-Date.now())/1000);
$('h1').text(secondsLeft);

如果(secondsLeft您有一个在计时器函数中将其设置为“undefined”的有效参数,请将其删除,它将正常工作

$(文档).ready(函数(){
var targetTime,有效期内;
$('button')。在('click',function()上{
targetTime=Date.now()+(1*60*1000);
intervalID=设置间隔(计时器,1000);
});
//setInterval函数的计时器回调
函数计时器(){
var secondsLeft=Math.ceil((targetTime-Date.now())/1000);
$('h1').text(secondsLeft);

if(secondsLeft)这是正确的策略。@segmentationfaulter我建议在调用
setInterval
之前添加以下代码行,否则在计时器耗尽之前多次单击按钮将导致失控间隔:
if(intervalID)ClearIntervalid(intervalID);