Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Задержка таймера (https://javascript.ru/forum/misc/19416-zaderzhka-tajjmera.html)

Isaac 03.08.2011 18:06

Задержка таймера
 
Всем здравсвуйте.
Нашел на форуме данный код
var elem = document.getElementsByTagName('div')[0],
			i = 30;
			l = 30,
			j = 0,
			k = 0,
			s = 100;
			
		if(k != 0)
			return;
				
			(function()
			{
				if(i <= s)
				{
					elem.style.top = ++ i + 'px';
					j = i;
					k = 1;
				}else
				 {					
					 elem.style.top = -- j +'px';
					 if(j <= l)
					 	i = l;
				 }
				
				window.setTimeout(arguments.callee, 10);
				
				return false;
			})();
			
			return false;

<div id="foo" style="background: #0095FF; position: absolute; width: 50px; height: 50px"></div>

Вопрос в следующем: если я хочу сделать задержку в таймере , то есть, чтоб див поднимался допустим через 10сек, как подоьное реализовать, подскажите ?
И еще один вопрос: идеальный ли этот код, для подобной анимации или можно сделать еще лучше?

DooMer 03.08.2011 18:53

window.setTimeout(arguments.callee, 10);

аргумент передается в милисекундах - 10000

monolithed 03.08.2011 19:08

Isaac,
Зачем вы его так отформатировали, что он потерял рабочий вид? ;)

Код, плохой, так писать не нужно, потому что он не имеет модульной формы и не является переносимым. Однако он имеет довольно простую структуру, чтобы понять что в нем происходит.

К прочтению

Isaac 03.08.2011 20:52

Цитата:

Сообщение от DooMer (Сообщение 117134)
window.setTimeout(arguments.callee, 10);

аргумент передается в милисекундах - 10000

Так у меня и так стоит window.setTimeout(arguments.callee, 10) или еще раз нужно добавить эту строку ?

Isaac 03.08.2011 20:54

Цитата:

Сообщение от monolithed (Сообщение 117136)
Isaac,
Зачем вы его так отформатировали, что он потерял рабочий вид? ;)

Код, плохой, так писать не нужно, потому что он не имеет модульной формы и не является переносимым. Однако он имеет довольно простую структуру, чтобы понять что в нем происходит.

К прочтению

Я его позже приведу в старыйвид,пока, как тестовый вариант отформатировал код.

dmitriymar 03.08.2011 21:32

Цитата:

Сообщение от Isaac
Так у меня и так стоит window.setTimeout(arguments.callee, 10) или еще раз нужно добавить эту строку ?

у тебя стоит 10 милисекунд ,а тебе нужно 10 секунд.это 10 000 милисекунд

Isaac 03.08.2011 21:52

Цитата:

Сообщение от dmitriymar (Сообщение 117153)
у тебя стоит 10 милисекунд ,а тебе нужно 10 секунд.это 10 000 милисекунд

Хорошо, добавил я 10000 и что с того?
Анимация стала медленней, но ведь я не это просил.
Я спрашивал, как мне сделать, чтоб после того, как див опустился вниз, была пауза, а потом он поднимается вверх.
Как сделать паузу в таймере?
В jQuery, если не ошибаюсь, есть delay, а подобное в js реализовать, как можно?

dmitriymar 03.08.2011 22:05

ты спросил о задержке в таймере. твой код для паузы не пригоден абсолюно.
у тебя должно быть 2 таймера-один для функции движения(таймер сбрасывается при достижении низа.второй в это время устанавливается и через промежуток времени запускает функцию движения)

Isaac 03.08.2011 22:14

Цитата:

Сообщение от dmitriymar (Сообщение 117157)
ты спросил о задержке в таймере. твой код для паузы не пригоден абсолюно.
у тебя должно быть 2 таймера-один для функции движения(таймер сбрасывается при достижении низа.второй в это время устанавливается и через промежуток времени запускает функцию движения)

Таймер в таймере?
А это наверное не очень хорошо?
В jQuery так же реализовано? Стоит ли писать на чистом js? Как подобное отобразится на браузере, "тормозов" и "заиканий" анимации не будет?
Или лучше написать на jQuery, чтоб все "гладко" было реализовано?

dmitriymar 03.08.2011 22:20

Цитата:

Сообщение от Isaac
Таймер в таймере?
А это наверное не очень хорошо?

где хоть слово о тайме в таймере? у тебя должно быть 2 таймера один движение.второй задержка(вызывает движение опять через время).
нарисуй сам для себя алгоритм-смысл писать код если не представляешь как он будет работать?
а вообще на форуме есть такой пример-смотри


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