Задать вопрос
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, поскольку див не реагирует на повторный клик.
В чём же проблема?
  • Вопрос задан
  • 9096 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
Решения вопроса 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);
    }
};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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