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

时间:2019-03-03 06:49:17

标签: javascript timer setinterval clearinterval

有一个物体。 该方法可以在同一对象内的另一种方法中初始化计时器。

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

1 个答案:

答案 0 :(得分:0)

确保条件是正确的,并且在满足条件时,条件块的内部正常工作。您应该调出thisVeryTimer来确保它具有相同的时间间隔ID。

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

pixel.png

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