как отключать таймер setInterval ? Работают параллельно несколько

372
20 апреля 2022, 00:00

сразу таймер запускается потом если время уходит то он клацает на #next, если он все делает сам то норма, а если я не дождусь таймера клацну на #next то таймер, что работал будет работать и появится новый т.е (как и должен быть а старый должен же уже не работать, если несколько раз клацну то параллельно будет много работать к примеру на одном осталось 2 сек, на другом 5 сек на последнем 8 сек и т.д.

$(".next").click(function () {
  timerSite = function(status) {
          if (status) {
              const secondsToAnswer = 10; // Количество секунд для ответа
              let timeLeft = secondsToAnswer;
              const timer = setInterval(function(){
                if (timeLeft > 0) { // На последней секунде
                  $('.timer').text(timeLeft + ' сек');
                  timeLeft--;
                } else {
                  $('.timer').text('Время вышло');
                  $('#next').click();
                   clearInterval(timer);
                }
              }, 1000);
          }else {
              clearInterval(timer);
          }
        }
        //пробовал передать false выдает ошибку :
  //Uncaught ReferenceError: timer is not defined
        timerSite(false);
        //тут он запускается
        timerSite(true);
      
});

Answer 1

У вас константа timer инициализируется внутри условия когда оно истинно, т.е. когда передаёте в функцию true. Следовательно когда передаёте false функция пытаемся сбросить несуществующий таймер

READ ALSO
почему таймер не отключается предыдущий, когда включается новый? [дубликат]

почему таймер не отключается предыдущий, когда включается новый? [дубликат]

Таймер отключается только когда выходит время, а если нажать кнопку то запустится уже новый таймер, и предыдущий тоже будет работать

214
Jquery перевести JSON в массив обьектов

Jquery перевести JSON в массив обьектов

У меня сейчас такой код

294
Как подружить $.getScript() с асинхронным запросом?

Как подружить $.getScript() с асинхронным запросом?

Есть массив, который при некотором условии должен подгружаться извнеЕсть необходимость в конце вызвать getScript(), в котором этот массив должен...

301
Скрытие модального окна

Скрытие модального окна

Создаю модальное окно с полноразмерным изображением, однако есть ошибка, при клике на превью появляется модалка, затем сразу же удаляется,...

202