Как мне остановить и сбросить таймер setInterval - PullRequest
0 голосов
/ 25 мая 2019

Как мне остановить и сбросить таймер setInterval обратно на 00: 00?

Настройка clearInterval(timer); работает для остановки времени, но я не могу понять, как сбросить значение времени обратно на 00:00.

Вот где я нахожусь:

HTML

<span class="timer">
  <label id="minutes">00</label>:<label id="seconds">00</label>
</span>

JS

const minutesLabel = document.getElementById("minutes");
const secondsLabel = document.getElementById("seconds");
let timer = setInterval(setTime, 1000);

function setTime() {
  ++totalSeconds;
  secondsLabel.innerHTML = pad(totalSeconds % 60);
  minutesLabel.innerHTML = pad(parseInt(totalSeconds / 60));
}

function pad(val) {
  let valString = val + "";
  if (valString.length < 2) {
    return "0" + valString;
  } else {
    return valString;
  }
}

stopTimer = () => {
  clearInterval(timer);
  timer = setInterval(setTime, 1000);
};

Я использую этот таймер в игре, поэтому в зависимости от состояния пользователя мне нужно иметь возможность start, stop и restart время, возвращающееся к 0.

Ответы [ 2 ]

1 голос
/ 25 мая 2019

Теперь происходит то, что ваша переменная продолжает расти, даже когда вы «сбрасываете» таймер.

Просто добавьте

totalSeconds = 0;

к вашей функции stopTimer.Это сбросит переменную на ноль.

1 голос
/ 25 мая 2019

Переменная totalSeconds отслеживает ваше время. Название вашей функции stopTimer () - возможно, это должно быть restartTimer - кажется немного вводящим в заблуждение, поскольку вы перезапускаете таймер там, но в основном просто устанавливаете totalSeconds на 0, например:

stopTimer = () => {
  totalSeconds = 0;
  clearInterval(timer);
  timer = setInterval(setTime, 1000);
};
...