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.total
timeinterval
仅在语句的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
)将被遗忘。如果您定义e
timeInterval
在click处理程序的外部范围内,则它将在该处理程序的调用之间保持不变。