Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Не получается очистить таймер (https://javascript.ru/forum/events/31214-ne-poluchaetsya-ochistit-tajjmer.html)

x3zone 30.08.2012 11:55

Не получается очистить таймер
 
Здравствуйте!
Есть такой код.Не получается очистить таймер.left уезжает в бесконечность.Плюс при повторном вызове onclick (клик по диву) анимация ускоряется.Подскажите как это можно исправить?

window.onload = function(){
var contpos = document.getElementById("contpos");
var b1 = document.getElementById("b1");
b1.onclick = myclick1;
}

function myclick1(){
var timer1 = setInterval(animate1,15);
}

function animate1(){
var left = parseInt(contpos.style.left);
left+=10;
contpos.style.left = left + "px";
if(left == 100){
clearInterval(timer1);
}
}

Deff 30.08.2012 11:58

x3zone,
Вынести var timer1 - в глобальную область видимости - вне функций
Либо запускать функцию очистки из функции с видимостью var timer1

var timer1;
function myclick1(){
  timer1 = setInterval(animate1,15);
}

x3zone 30.08.2012 12:12

Спасибо!Работает!А как сделать что бы до конца анимации объект не реагировал на повторный вызов события onclick?

Deff 30.08.2012 12:29

window.onload = function(){
 var contpos = document.getElementById("contpos");
 var b1 = document.getElementById("b1");
 b1.onclick = myclick1;
 }

 var timer1;
 var StopClick=false;
 function myclick1(){
 if(!StopClick){StopClick=true;
 timer1 = setInterval(animate1,15);
 }}

 function animate1(){
 var left = parseInt(contpos.style.left);
 left+=10;
 contpos.style.left = left + "px";
 if(left == 100){
 StopClick=false;
 clearInterval(timer1);
 }
 }

x3zone 30.08.2012 13:14

Спасибо!


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