Задать вопрос
inscamp
@inscamp

Не работает clearInterval(). В чём проблема?

Есть функция, генерирующая случайный цвет, и функция, устанавливающая его в качестве backgroundColor для дива.

При первом клике див будет менять свой цвет (за счёт использования setInterval). При втором клике по нему же он должен перестать менять цвет (соответсвенно, за счёт clearInterval).

var ind = false;

item.onclick = function(){
    if (!ind) {
	  var cycle = setInterval(changeBG, 100);
      ind = true;
	} else {
      clearInterval(cycle);
      ind = false;
	}
};


В представленном коде имеется какая-то явная ошибка в вызове clearInterval, поскольку див не реагирует на повторный клик.
В чём же проблема?
  • Вопрос задан
  • 9104 просмотра
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    JavaScript
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик расширенный
    13 месяцев
    Далее
  • Академия Eduson
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
Решения вопроса 1
rmaksim
@rmaksim
var ind = false;
var cycle

item.onclick = function(){
    if (!ind) {
        cycle = setInterval(changeBG, 100);
        ind = true;
    } else {
        clearInterval(cycle);
        ind = false;
    }
};

а можно обойтись и без второй переменной
т.к. setInterval возвращает Id таймера, можно его и проверять и потом соотв. сбрасывать
var timer

item.onclick = function(){
    if (!timer) {
        timer = setInterval(changeBG, 100);
    } else {
        timer = clearInterval(timer);
    }
};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы