Задать вопрос
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, поскольку див не реагирует на повторный клик.
В чём же проблема?
  • Вопрос задан
  • 9108 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик расширенный
    13 месяцев
    Далее
  • Skillbox
    JavaScript
    3 месяца
    Далее
Решения вопроса 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);
    }
};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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