【问题标题】:Why can't I clear this timer in JavaScript?为什么我不能在 JavaScript 中清除这个计时器?
【发布时间】:2019-03-03 06:49:17
【问题描述】:

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

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);
}

【问题讨论】:

  • 我建议不要在不必要的时候使用愤怒的语言,它在 StackOverflow 之类的平台上没有任何帮助,只会增加噪音
  • 很抱歉,这让我无法停止计时器一个小时......
  • 在 timerOnTheRight 中,您有一个计数器变量 countDown1,然后您永远不会使用它...这是什么 #maincontact1qr,它真的保存了您似乎期待的数字倒计时吗?
  • 你在哪里设置$("#maincontact1qr").text()

标签: javascript timer setinterval clearinterval


【解决方案1】:

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

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

clearInterval(thisVeryTimer);

试着把上面的代码移出区间块。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 2023-02-09
    • 2012-02-06
    • 1970-01-01
    相关资源
    最近更新 更多