JS "убить" setInterval

numer482
На сайте с 06.07.2011
Offline
44
3281

Задача:

При наведении мыши на элемент запускается setInterval и div растет до нужного размера. А при отведении уменьшается до прежнего размера.

Однако если он его не дорисовал размер сбрасывается, но потом все ровно рисует. :crazy:

Подскажите как "убить" setInterval из другой функции?

IL
На сайте с 20.04.2007
Offline
435
#1

Получить ID-шник и передать его в функцию clearInterval

intervalID = window.setInterval(func|code, delay)
clearInterval(intervalID)
http://javascript.ru/setInterval

p.s. поиск не помогает?

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
numer482
На сайте с 06.07.2011
Offline
44
#2

В том то и дело, что так пробовал не работает:😕


//Функция запуска таймера
function start(nam) {

var timer = window.setInterval(function(){anim(nam)}, 10) //запуск таймера
}

//Функция анимации
function anim(nam) {

var h = parseInt(document.getElementById(nam).style.height); //получение высоты

if(isNaN(h)) { h=0;} //если не получилось, то 0


if (h < 200) {
document.getElementById(nam).style.height = h +1 + 'px'; //увеличение высоты
} else window.clearInterval(timer); //автомат. остановка
}

//Функция вызывается при отведении курсора
function stop(nam) {
window.clearInterval(timer);//останов таймера

}

аха)))какой то гавнокод у меня получился....наверно нужно пойти поспать что ли...голова не варит:o:o:o:o:o

---------- Добавлено 20.11.2012 в 01:41 ----------

Все. Заработало. Проблема была с видимостью переменной timer и концептуальной кривизной кода

Спасибо:)

IL
На сайте с 20.04.2007
Offline
435
#3

видимость переменных.. timer надо объявить за пределами функции


var timer;
function start(nam) {
timer = window.setInterval(function(){anim(nam)}, 10) //запуск таймера
}
numer482
На сайте с 06.07.2011
Offline
44
#4
ivan-lev:
видимость переменных.. timer надо объявить за пределами функции


var timer;
function start(nam) {
timer = window.setInterval(function(){anim(nam)}, 10) //запуск таймера
}

Да, спасибо. Так и решил проблему:)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий