Вход

Просмотр полной версии : остановить таймер


Vladimir93
24.11.2014, 01:33
В одном из методов запускаю таймер командой. a1 = setTimeout(Change, tt * 500); При нажатии на кнопку запускается функция в которой этот таймер останавливается кодом clearTimeout(a1); Почему не работает?

Vlasenko Fedor
24.11.2014, 01:51
setTimeout выполняет код только один раз
http://javascript.ru/setTimeout

Vladimir93
24.11.2014, 02:01
Блин, просмотрел. Пытаюсь через флаг. if (viiti == 1){
return;
}
viiti присваиваю 1, там где раньше был clearTimeout. Тоже что-то не очень.

ruslan_mart
24.11.2014, 05:34
Vladimir93, может Вы имели ввиду setInterval?

Vladimir93
24.11.2014, 10:37
У меня происходит рекурсия, поэттому сдесь setTimeout нужно Change();
function Change() {
if (viiti == 1){
return ;
}
else {
var cc = CLR.shift();
CLR.push(cc);
var tt = TMR.shift();
TMR.push(tt);
d.style.backgroundColor = (cc.charAt(0) == 1) ? '#FF0000' : '';
d1.style.backgroundColor = (cc.charAt(1) == 1) ? '#FFFF00' : '';
d2.style.backgroundColor = (cc.charAt(2) == 1) ? '#00FF00' : '';
setTimeout(Change, tt * 500);
}

}

Aetae
24.11.2014, 15:29
Change();
function Change() {
if (viiti == 1){
return ;
}
else {
var cc = CLR.shift();
CLR.push(cc);
var tt = TMR.shift();
TMR.push(tt);
d.style.backgroundColor = (cc.charAt(0) == 1) ? '#FF0000' : '';
d1.style.backgroundColor = (cc.charAt(1) == 1) ? '#FFFF00' : '';
d2.style.backgroundColor = (cc.charAt(2) == 1) ? '#00FF00' : '';
*!*a1 = */!* setTimeout(Change, tt * 500);
}

}Кабэ очевидно. Таймаут то уже другой.