Событие 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 разрабатывался для многопоточных операционных систем, поэтому правильнее будет представлять себе исполнение скриптов следующим образом:
- Скрипт получает управление при событии onLoad().
- Заменяет картинку.
- Порождает новый скрипт и откладывает его исполнение на 500 миллисекунд.
- Текущий скрипт уничтожается JavaScript-интерпретатором.
После окончания срока задержки исполнения все повторяется. В первом примере (бесконечное повторение) функция порождает саму себя и, тем самым, поддерживает непрерывность своего выполнения. Во втором примере (конечное число итераций) после шести повторов функция не порождается. Это приводит к завершению процесса отображения новых картинок.