не могу остановить 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, время: 20:07. |