Основы Web-инжиниринга. Часть 1. Громов Ю.Ю - 97 стр.

UptoLike

Еще один характерный приемприменение функции отложенного исполнения JavaScript-кода (eval()):
function def()
{
for(i=0;i<32;i++)
{
eval("document.m"+i+".src=mono["+i+"].src");
}
for(i=0;i<5;i++)
{
eval("document.r"+i+".src=rm["+i+"].src");
}
}
В данном случае eval() избавляет нас от необходимости набирать операции присваивания.
Мультипликация. Естественным продолжением идеи замещения значения атрибута SRC в теге IMG является мультип-
ликация, т.е. последовательное изменение значения этого атрибута во времени. Для реализации мультипликации используют
метод объекта WindowsetTimeout().
Собственно, существуют два способа запуска мультипликации:
onLoad();
onClick(), onChange() ...
Наиболее популярныйsetTimeout() при onLoad().
Событие onLoad() наступает в момент окончания загрузки документа браузером. Обработчик события указывается в
теге BODY:
...
<BODY onLoad="JavaScript_code">
...
В нашем случае при загрузке документа должен начать выполняться цикл изменения картинки:
function movie()
{
eval("document.images[0].src='clock"+
i+".gif';");
i++;if(i>6) i=0;
setTimeout("movie();",500);
}
...
<BODY onLoad="movie();">
...
В примере используется бесконечный цикл, хотя можно реализовать и конечное число подмен:
function movie()
{
eval("document.images[0].src='clock"+
i+".gif';");
i++;
if(i<7)
{
setTimeout("movie();",500);}
}
...
<BODY onLoad="movie();">
В обоих примерах следует обратить внимание на использование метода setTimeout(). На первый взгляд, это просто
рекурсия. Но в действительности все несколько сложнее. JavaScript разрабатывался для многопоточных операционных сис-
тем, поэтому правильнее будет представлять себе исполнение скриптов следующим образом:
1. Скрипт получает управление при событии onLoad().
2. Заменяет картинку.
3. Порождает новый скрипт и откладывает его исполнение на 500 миллисекунд.
4. Текущий скрипт уничтожается JavaScript-интерпретатором.
После окончания срока задержки исполнения все повторяется. В первом примере (бесконечное повторение) функция
порождает саму себя и тем самым поддерживает непрерывность своего выполнения. Во втором примере (конечное число
итераций) после девяти повторов функция не порождается. Это приводит к завершению процесса отображения новых карти-
нок.