Почему я не могу очистить этот таймер в JavaScript? - PullRequest
0 голосов
/ 03 марта 2019

Есть объект.Есть этот метод, который инициализирует таймер в другом методе в том же объекте.

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 голосов
/ 03 марта 2019

Удостоверьтесь, что условие корректно, и внутри условного блока работает, когда выполняется условие.Вы должны утешить thisVeryTimer, чтобы убедиться, что это тот же идентификатор интервала.

Другая проблема должна заключаться в области действия переменной.

clearInterval(thisVeryTimer);

Попробуйте переместить вышеуказанный код из интервала блока.

...