простейший пример, который потрепал нервы и отнял чуть больше времени, чем планировалось.
;о)
<html>
<head>
<script><!--
var t; // объявляем глобальную переменную, которая будет доступна
// в любом месте при выполнении скриптов
function ch2(){ // некая функция, которая должна выполнятся по таймауту
alert('129418724');
}
function sh1(){ // запускаем выполнение функции с интервалом в 3 секунды
t=setInterval(ch2,3000);
// иногда бывает не лишним попробовать заключить названия функции в кавычки
// не помню точно, но кажется какая-то категория старых браузеров глючила из-за этого
}
function sh2(){ // останов, отчистка переменной
clearInterval(t);
}
//--></script>
</head>
<body>
<button onClick="JavaScript:sh2()">stop</button>
<button onClick="JavaScript:sh1()">start</button>
</body>
</html>
не забывайте объявлять глобальную переменную, которую собираетесь использовать для создания интервала - ЗА ПРЕДЕЛАМИ ФУНКЦИЙ!
(либо используйте clearInterval непосредственно в той же функции, в которой объявили этот интервал/переменную)
я чайник, только начинаю, но даже если полностью вписываю предложенные варианты - ни какой задержки не происходит... ни в хроме, ни в опере, ни в ie... в чем подвох?
я так понял что интервал на странице всегда только один, для того что бы остановить все интервалы достаточно удалить предыдущий ID интервала. что то типа var id = setInterval(); clearInterval(id-1);
Что возвращает функция? Как узнать остановила ли она выполнение или нет?
В данный момент достаю бубен, как последний аргумент к разбору полёта с этой функцией.
clearInterval ничего не возвращает. Узнать можно только по результатам работы отрубаемой функции.
скажите а что такое intervalID? как его узнать?
Это идентификатор var intervalID = setInterval(func,delay);
Функция setInterval() после своего выполнения возвращает ID, остановить функцию setInterval() можно только при помощи этого ID, а именно:
var intervalID;
var k=0;
$("#example").mousedown(function(){
intervalID = setInterval(function(){
k++;
alert(k);
}, 1000)
});
$("#example").mouseup(function(){
clearInterval(intervalID);
});
Не работает твой пример
А если intervalID не известен?
Можно как-то получить список всех выполняемых intervalID на странице?
Очень простой код:
Последний алерт показывает timerid, но clearInterval не срабатывает, говоря, что timerId is not defined в чём может быть проблема?
javascript регистрозависим:
timerid
timerId
Может потому, что в var timerid; - "i", а в clearInterval(timerId); - "I"...?
простейший пример, который потрепал нервы и отнял чуть больше времени, чем планировалось.
;о)
не забывайте объявлять глобальную переменную, которую собираетесь использовать для создания интервала - ЗА ПРЕДЕЛАМИ ФУНКЦИЙ!
(либо используйте clearInterval непосредственно в той же функции, в которой объявили этот интервал/переменную)
я чайник, только начинаю, но даже если полностью вписываю предложенные варианты - ни какой задержки не происходит... ни в хроме, ни в опере, ни в ie... в чем подвох?
Задержка, как и полагается, выражается в миллисекундах.
как пример, работает функция с опред переодичностью,
и вырубаем её через время которое нам нужно.
setTimeout вам в помощь
будет вызываться каждые 2.5 и пытаться очистить уже очищенный интервал. Правильнее надо
setTimeout - отложенный единоразовый вызов функции через опредеденное время
я так понял что интервал на странице всегда только один, для того что бы остановить все интервалы достаточно удалить предыдущий ID интервала. что то типа var id = setInterval(); clearInterval(id-1);
Таймер ( то что Вы назвали интервалом ) не один, и даже не 100 - их намного больше. Можно попытаться остановить все таймеры вот таким кодом
Только правильным тоном будет сохранять ID таймеров и уничтожать их явным образом.