Есть ли способ переключить setInterval - PullRequest
0 голосов
/ 12 февраля 2020

Я просто играю с функцией setInterval в JavaScript. Мне интересно, есть ли способ переключить setInterval с помощью кнопки HTML

Это мой код.

let x = 0;
const listener = document.getElementById('listener');
const numberPlace = document.getElementById('numberPlace');

const numberCounter = setInterval(() => {
  x++;
  numberPlace.innerHTML = x;
}, 100);

listener.addEventListener('click', numberCounter);

Проблема в том, что число начинает отсчитываться при загрузке страницы а не по нажатию кнопки.

Пожалуйста, помогите

Ответы [ 2 ]

2 голосов
/ 12 февраля 2020
const numberCounter = () => setInterval(() => {
  x++;
  numberPlace.innerHTML = x;
}, 100);
0 голосов
/ 12 февраля 2020

setInterval можно отменить, используя clearInterval, а целочисленный идентификатор возвращается при вызове setInterval.

Для переключения setInterval - на основе счетчика, вам просто нужно переключиться на наличие (или отсутствие) этого идентификатора.

let counter = 0;
let intervalId = null;
const btn = document.getElementById('btn');
const numberPlace = document.getElementById('numberPlace');

const numberCounter = () => intervalId === null
    ? intervalId = setInterval(() => numberPlace.innerHTML = ++counter, 100)
    : (clearInterval(intervalId), intervalId = null)

btn.addEventListener('click', numberCounter);
<button id="btn">toggle</button>
<div id="numberPlace"></div>
...