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, поскольку див не реагирует на повторный клик.
В чём же проблема?
  • Вопрос задан
  • 8953 просмотра
Решения вопроса 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);
    }
};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы