Javascript 如何在if-else语句中清除间隔?
我想做一个小倒计时器。当用户单击按钮时,计时器开始并将Javascript 如何在if-else语句中清除间隔?,javascript,jquery,Javascript,Jquery,我想做一个小倒计时器。当用户单击按钮时,计时器开始并将isTiming设置为true,然后当用户再次单击按钮时,计时器停止并将isTiming设置为false。问题是当我单击按钮停止计时器时,timeInterval未被清除。我记录了时间间隔,发现它是未定义的。我哪里出错了 $("#time-count").click(function() { if (!isTiming) { isTiming = true; $( "#minus" ).fadeOut(); $(
isTiming
设置为true,然后当用户再次单击按钮时,计时器停止并将isTiming
设置为false。问题是当我单击按钮停止计时器时,timeInterval
未被清除。我记录了时间间隔
,发现它是未定义的
。我哪里出错了
$("#time-count").click(function() {
if (!isTiming) {
isTiming = true;
$( "#minus" ).fadeOut();
$( "#plus" ).fadeOut();
$( "div#inner" ).css("animation", "loader" + " " + String(60 * Number($("#time-count").text())) + "s ease-out");
$(this).text($(this).text() + ":" + "00")
//set the timeInterval
var timeInterval = setInterval(function() {
var t = formatTimeRemaining($("#time-count").text());
if (t.sec.length === 1) {
$("#time-count").text(t.min + ":" + "0" + t.sec);
}else {
$("#time-count").text(t.min + ":" + t.sec);
}
if (t.total <= 0) {
clearInterval(timeInterval);
}
}, 1000)
}else {
isTiming = false;
//Try to clearInterval here but fail
clearInterval(timeInterval);
$("#time-count").text("20");
$( "#minus" ).fadeIn();
$( "#plus" ).fadeIn();
}
});
$(“#时间计数”)。单击(函数(){
如果(!isTiming){
isTiming=true;
$(“#减”).fadeOut();
$(“#plus”).fadeOut();
$(“div#inner”).css(“动画”、“加载程序”+“”+字符串(60*数字($(#时间计数”).text())+“s释放”);
$(this.text($(this.text()+“:”+“00”)
//设置时间间隔
var timeInterval=setInterval(函数(){
var t=formatTimeLeving($(“#时间计数”).text();
如果(t.sec.length==1){
$(“#时间计数”).text(t.min+”:“+”0“+t.sec);
}否则{
$(“#时间计数”).text(t.min+”:“+t.sec);
}
如果(t.totaltimeinterval
仅在语句的if-then部分中定义,而不在else部分中定义。将var
放在函数的开头,仅从现在的setInterval
位置分配值。timeinterval
仅在语句的if-then部分中定义,而不在else部分中定义rt.将var
放在函数的开头,只从setInterval
现在的位置分配值。您的timeInterval
需要是全局的,否则每次单击都会有一个局部变量。您的timeInterval
需要是全局的,否则每次都会有一个局部变量单击的时间。在if-it-limited变量范围之外声明时间间隔在if-it-limited变量范围之外声明时间间隔您需要在外部范围内声明var-timeinterval
,因为一旦处理了单击事件处理程序,它的内部变量(包括timeinterval
)将被删除遗忘。如果在单击处理程序的外部作用域中定义timeInterval
,则该处理程序的调用之间将保持不变。您需要在外部作用域中声明var timeInterval
,因为一旦处理了单击事件处理程序,其内部变量(包括timeInterval
)将被遗忘。如果您定义etimeInterval
在click处理程序的外部范围内,则它将在该处理程序的调用之间保持不变。