таймер javascript

Таймеры: интервалы и таймауты

Таймеры позволяют отмерять промежутки времени. Например, заводим таймер на 1 минуту, и через 1 минуту он срабатывает (запускается какой-то код на javaScript).

Таймеры бывают 2-х видов: таймаут и интервал. Таймаут — таймер однократного срабатывания, интервал — множественного.

Таймер работает в рамках одного окна (объекта window). И в одном окне могут независимо работать несколько таймеров.

Рассмотрим пример таймаута:

var t1;
function Timeout(){
   t1=window.setTimeout("alert('setTimeout')", 7000);}

Чтобы в таймере (см. код выше) начать отсчет времени, надо вызвать метод объекта window — setTimeout. У метода 2 параметра: 1 — строка, в которой какой-то код javaScript (обычно пишут вызов какой-то функции), который заработает в момент срабатывания таймера; 2 — количество миллисекунд, через которое таймер сработает. После того, как таймаут сработал, он прекращает свое существование.

Интервал создается методом setInterval. Параметры у этого метода — как у setTimeout (см. выше). Разница в том, что у setInterval интервал будет срабатывать многократно.

var t2;
function Interval(){
   t1=window.setInterval("alert('setInterval')", 2000);}

Бывают ситуации, когда работу таймера или интервала надо остановить. Для этого есть методы: clearTimeout, clearInterval. В качестве параметра этим методам передается идентификатор таймера, который надо остановить. Такие идентификаторы получаются при создании таймера или интервала (в коде выше в качестве идентификаторов использованы переменные t1 и t2).

clearTimeout(t1);
clearInterval(t2);

Код часов (в статусной строке)

var timer;
function showTime(){
   var now=new Date();
   window.defaultStatus=now.toLocaleTimeString();}
function startClock(){
   if(!timer)
      timer = window.setInterval('showTime()',1000);}
function stopClock(){
   window.clearInterval(timer);
   timer=null;
   window.defaultStatus=""}
<a href="javascript:startClock()">start Clock</a>
<a href="javascript:stopClock()">stop Clock</a>



Добавить комментарий

Ваш e-mail не будет опубликован.