Метод window.setTimeout() является одним из наиболее мощных и полезных методов во всем JavaScript.
Принцип работы этого метода заключается в порождении нового потока вычислений через определеный интервал времени, заданный в миллисекундах. В общих чертах запись метода выглядит следующим образом:
a = setTimeout("поток_кода",время);
Не стоит переживать, если вам пока непонятен данный метод. Далее все встанет на сои места.
Давайте теперь рассмотрим пример, который поможет нам лучше понять принцип работы метода window.SetTimeOut():
<script>
var mark=0;
var circle;
function time()
{
if(mark==1)
{
d = new Date();
window.document.c.f.value = d.getHours()+":"+d.getMinutes()+
":"+d.getSeconds();
}
circle=setTimeout("time();",500);
}
function marks()
{
if(mark==0)
mark=1;
else mark=0;
}
</script>
<FORM NAME=c>
Текущее время:
<INPUT NAME=f size=8>
<INPUT TYPE=button VALUE="старт/стоп" onClick="marks();time();">
</FORM>
Итак, рассмотрим нашу программу более подробно:
Программа состоит из 2х функций, одна из которых ( time() ) порождает потоки времени, другая ( marks() ) отвечает за отображение времени на экране.
Функция time() проверяет значение переменной mark (значение которой, в свою очередь, может изменять функция marks() ) на равенство 1. Если она равна 1, то порождается поток времени при помощи функции date(). Но не важно, равна переменная mark 1 или не равна, в любом случае функция time() вызывает метод window.SetTimeOut() с параметрами:
setTimeout("time();",500);
Тоесть функция порождает себя заново с интервалом 500 мс, что позволяет ей всегда держать внутри переменной d свежее значение времени.
Функция marks() является простейшей функцией, единственной задачей которой является изменение значения переменной mark с 0 на 1 и наоборот при каждом вызове.
Далее мы создаем простую форму, состоящую из текстового поля и кнопки, содержащей обработчик события OnClick:
onClick="marks();time();"
Таким образом, нажимая на кнопку мы первым делом вызываем функцию marks(), которая изменяет значение mark, а за тем в бой идет основная функция – time(), которая и отвечает за вывод времени.
Нажав на кнопку повторно мы опять изменим значение mark, что повлияет на выполнение условия if внутри функции time(), показав или убрав время с экрана.