Работа с функциями setInterval() и clearInterval() в JavaScript
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Работа с функциями setInterval() и... Expand / Collapse
Автор
Сообщение
21.10.2006 5:45
Junior Member

Junior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior Member

участник
Last Login: 05.12.2007 15:14
Сообщ.: 18, Visits: 140
Если у кого есть выложите пример работы с этими функциями. Если быть точнее интерисует вызов этих функций по несколку раз для разных обектов.
Сообщ. #906137
21.10.2006 10:09
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/methods/setinterval.asp
Сообщ. #906138
23.10.2006 6:33
Junior Member

Junior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior Member

участник
Last Login: 05.12.2007 15:14
Сообщ.: 18, Visits: 140
Спасибо. Буду разбираться.
Сообщ. #906209
24.10.2006 0:55
Junior Member

Junior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior Member

участник
Last Login: 05.12.2007 15:14
Сообщ.: 18, Visits: 140
Разобрался там не то что мне надо.
Вот что у меня не работает.

function init_move(id)
{
dx=2;
dy=2;
id_move=setInterval("move(dx,dy,id)",5);
}
function move(dx,dy,id)
{
var y=parseInt(document.getElementById(id).style.top);
var x=parseInt(document.getElementById(id).style.left);
document.getElementById(id).style.top=y+dy;
document.getElementById(id).style.left=x+dx;
if(parseInt(document.getElementById(id).style.left)>500)
{
clearInterval(id_move);
}
}
id="img36";
init_move(id);
id="img35";
init_move(id);


Не пойму почему вместо того чтобы передвигать второй обект img35 продолжает двигаться обект img36 хотя я его останавливаю.
Сообщ. #906313
24.10.2006 8:57
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 29.05.2008 20:04
Сообщ.: 269, Visits: 2 381
Почему неработает? Возможно при вызове функции, функция переходит во власть интервала и поэтому не доходит до вызова строки:

id="img35";
init_move(id); 

Попробуй вместо clearInterval(id_move); написать:

id="img35";
init_move(id);

Если работать не будет, то или условие неверное (хотя, всё правельно) или неправельно заданы настройки изображения, должно быть нечто подобное:

<img src="1.gif" id="img35" style="position:absolute;">

----------------------------------
Я безработный...
Возьмите меня на работу. =)

Сообщ. #906317
24.10.2006 10:36
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Потому что ты сохраняешь идентификатор таймера (результат выполнения setInterval) в одну и ту же переменную. Второй вызов просто затирает предыдущее значение.

Есть и другие ошибки. Я не буду их объяснять, а просто приведу исправленный вариант:

function init_move(id)
{
 timers[id] = setInterval("move(2,2,'"+id"')", 5);
}

function move(dx,dy,id)
{
 var objStyle = document.getElementById(id).style;
 
 var y =parseInt(objStyle.top);
 var x =parseInt(objStyle.left);
 objStyle.top  = y+dy;
 objStyle.left = x+dx;
 if(parseInt(objStyle.left) > 500)
 {
  clearInterval(timers[id]);
  timers[id] = null;
 }
}

var timers = [];
init_move("img36");
init_move("img35");

Сообщ. #906326
25.10.2006 2:02
Junior Member

Junior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior Member

участник
Last Login: 05.12.2007 15:14
Сообщ.: 18, Visits: 140
Спасибо. Сейчас попробую.
Сообщ. #906423
25.10.2006 2:19
Junior Member

Junior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior Member

участник
Last Login: 05.12.2007 15:14
Сообщ.: 18, Visits: 140
Работает, но передвигаются одновременно два обекта, а требуется чтобы сначала предвинулся один объект закончил движение и только потом двигался другой. Если можно более подробно про идентификатор.
Сообщ. #906424
25.10.2006 2:25
Junior Member

Junior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior Member