не могу остановить setinterval
Люди добрые подскажите) Имеется функция. Вызывается автоматический таймер, который меняет картинки через определенный промежуток времени.
function timer(flag){
var intervalId = setInterval (function(){...}
if (flag == 'false') {
clearInterval(intervalId);
}
}
Вызываю эту функцию с параметром timer('false'); Работает и останавливает. Хочу при нажатии на картинку вызвать эту функцию и остановить таймер и затем заново запустить, от того момента с которого я нажал на картинку. Пишу
$("#cimg2").click(function(event){
timer('false');//останавливает таймер
...
код//выполняет нужный мне код
timer();//опять запускается таймер
}
Не работает и не останавливает. Убирал timer(); в $("#cimg2").click(function(event), чтобы проверить остановит ли он таймер, не остановил. Не могу понять почему в данном случае он не останавливает таймер, и как сделать чтобы заработал. |
harley, сделай для начала полный тестовый пример... Кому нужны твои огрызки.
|
Во первых в своей функции ты пишешь:
var intervalId = setInterval (function(){...}// что означает локальную переменную, которая доступна внутри функции.
Далее ты вызываешь снова эту функцию передаешь флаг, и о чудо почему то не работает. А потому что clearInterval(intervalId);//этот intervalId это уже другой, а не тот что ты запустил при прошлом вызове функции. другими словами состояние setInterval хранить в глобальной переменной, например window['myInterval'] = setInterval...... и его уже останавливать и переопределять. Кстати советую в качестве флага передавать не строку а просто true Или false и проверять соответственно не на строку. |
Спасибо за помощь, решил так ситуацию:
var intervalId;
function timer(){
intervalId = setInterval (function(){...}
}
...
timer();
...
$("#cimg2").click(function(event){
clearInterval(intervalId);
...
код//выполняет нужный мне код
timer();//опять запускается таймер
}
|
| Часовой пояс GMT +3, время: 01:24. |