繁体   English   中英

为什么我不能在 JavaScript 中清除这个计时器?

[英]Why can't I clear this timer in JavaScript?

有一个对象。 有这个方法在同一个对象中的另一个方法中初始化计时器。

initstep1() {
  var totAns = TriviaGame.corAnswered + TriviaGame.incorAnswered;
  //for (let v=0;v<TriviaGame.arrayOfSelected.length;v++){TriviaGame.arrayOfSelected.pop();}
  //for (let u=0;u<TriviaGame.arrayOfIntervals.length;u++){clearInterval(TriviaGame.arrayOfIntervals[u]);TriviaGame.arrayOfIntervals.pop();}

  $("#maincontact0").css("display", "none");
  $("#maincontact2").css("display", "none");
  $("#maincontact1").css("display", "flex");

  if (totAns != 10) {
    TriviaGame.populatePromptContent();
  } else {
    TriviaGame.initstep3();
  }
  if (TriviaGame.corAnswered == 0 && TriviaGame.incorAnswered == 0) {
    TriviaGame.giveQuestionsClickEvents();
    TriviaGame.giveAnswersClickEvents();
  }

  $("#maincontact1qr").text() == 30;
  TriviaGame.timerOnTheRight();
}

它被称为 timerOnTheRight...

在这里......无论我做什么都不会被清除。

timerOnTheRight() {
  //for (let u=0;u<TriviaGame.arrayOfIntervals.length;u++){clearInterval(TriviaGame.arrayOfIntervals[u]);TriviaGame.arrayOfIntervals.pop();}
  console.log(TriviaGame.arrayOfIntervals);
  let countDown1 = 30;
  var thisVeryTimer = setInterval(function() {
    countDown1--;
    if ($("#maincontact1qr").text() != 1) {
      $("#maincontact1qr").text(countDown1);
    }
    if ($("#maincontact1qr").text() < 11) {
      $("#maincontact1qr").css("color", "orange");
    }
    if ($("#maincontact1qr").text() < 4) {
      $("#maincontact1qr").css("color", "red");
    }
    if ($("#maincontact1qr").text() == 1) {
      TriviaGame.arrayOfCurrent[0].timespent = "Yes";
      clearInterval(thisVeryTimer);
      TriviaGame.initstep2();
    }
  }, 600);
}

确保条件正确,并且在满足条件时条件块内部正在工作。 您应该安慰 thisVeryTimer 以确保它是相同的间隔 ID。

另一个问题应该是变量的范围。

clearInterval(thisVeryTimer);

尝试将上述代码移出区间块。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM