Javascript单击以切换启动/恢复失败。clearInterval不工作

Javascript单击以切换启动/恢复失败。clearInterval不工作,javascript,jquery,Javascript,Jquery,嘿,我目前正在通过构建一个时间倒计时来练习jquery,您可以单击它来暂停或继续。 但是clearInterval()不起作用。 每次我点击圆圈,它就会产生一个新的倒计时。我不知道为什么 var status="pause"; var timeleft=1500; $("#circle").click(function(){ var timer; if(status==="pause"){ status="start"; alert(status

嘿,我目前正在通过构建一个时间倒计时来练习jquery,您可以单击它来暂停或继续。 但是clearInterval()不起作用。 每次我点击圆圈,它就会产生一个新的倒计时。我不知道为什么

var status="pause";
var timeleft=1500;

$("#circle").click(function(){
    var timer;
    if(status==="pause"){
        status="start";
        alert(status);
         timer=setInterval(function(){
            $("#timer").text(Math.floor(timeleft/60)+":"+timeleft%60);      
            timeleft--;
        },1000);
    }
    else if(status==="start"){
        status="pause";
        alert(status);
        clearInterval(timer);
    }

});

“timer”变量的作用域在click处理程序中。这意味着每次都会创建一个新的。要仅保留一个变量,它的作用域应位于该处理程序的外部。

您的'timer'变量的作用域位于click处理程序的内部。这意味着每次都会创建一个新的。要仅保留一个计时器变量,它的作用域应位于该处理程序之外。

计时器变量需要位于父作用域中,以便通过多次单击保留其值

var status=“暂停”;
var timeleft=1500;

无功定时器// 计时器变量需要位于父作用域中,以便通过多次单击保持其值

var status=“暂停”;
var timeleft=1500;

无功定时器//请注意,您实际上并不需要
status
变量。
timer
变量可以存储此信息。如果它是
null
,则计时器未运行,否则它是正在运行的计时器的ID(非零,在If中为
true
)。你只需要在
clearInterval
@klenium之后加上
timer=null
status
变量用于检查我的pomodoro时钟的其他onclick函数。不过还是要感谢你的提示。是的,我知道。请注意,你并不真的需要
status
变量。
timer
变量可以存储此信息。如果它是
null
,则计时器未运行,否则它是正在运行的计时器的ID(非零,在If中为
true
)。你只需要在
clearInterval
@klenium之后加上
timer=null
status
变量用于检查我的pomodoro时钟的其他onclick函数。不过还是要感谢你的提示。是的,我知道了。非常感谢!真不敢相信我在这个错误上浪费了这么多时间:(嘿,你在练习。我们都得从哪里开始。没什么大不了的。@KyleYeh非常感谢!真不敢相信我在这个错误上浪费了这么多时间:(嘿,你在练习。我们都得从哪里开始。没什么大不了的。@KyleYeh