Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   остановить таймер (https://javascript.ru/forum/misc/51884-ostanovit-tajjmer.html)

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);
            }

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


Часовой пояс GMT +3, время: 07:03.