setTimeout
, предложенный в нескольких ответах, не является правильным ответом. setTimeout
и setInterval
могут выглядеть одинаково, но setTimeout
предназначен для одиночных событий, а setInterval
- для повторяющихся событий, как часы.
Итак, setInterval
- правильный ответ, но сообщение Twisol предлагает только половину решения. Функция setInterval запускает таймер при загрузке страницы, но вы также должны останавливать таймер при загрузке другой страницы. Если вы этого не сделаете, то каждый раз, когда вы снова загружаете страницу с часами, запускается новый таймер, в то время как старые все еще хранятся в вашем браузере.
<body onLoad="startTimer();" onUnload="stopTimer();">
Когда вы запускаете таймер, функция setTimeout
возвращает идентификатор таймера, который вы передаете в качестве аргумента для функции clearTimeout
:
var intervalID;
function startTimer() {
intervalID = window.setInterval(updateDateAndTime, 200);
}
function stopTimer() {
window.clearInterval(intervalID);
}
nnnnnn касается частоты обновления. Однако имейте в виду, что функция полного обновления может не выполняться 10 раз в секунду. Моя функция часов, например, считывает файлы cookie с настройками часов. Вы не хотите читать куки 10 раз в секунду. Более важным случаем будет вызов XMLHttpRequest
. Сервер может или не может всегда отвечать в течение 100 мс.
Для этих ситуаций я обычно создаю счетчик тиков, который увеличивается каждый раз при вызове функции updateDateAndTime
и сбрасывается, когда, например, достигается 100. Это означает, что счетчик тиков сбрасывается каждые 10 секунд. Это хорошая частота для чтения файлов cookie или отправки XMLHttpRequest
. Просто сгруппируйте функции, которые не нужно запускать 10 раз в секунду, и выполняйте их каждый раз, когда счетчик тиков сбрасывается.
person
stevenvh
schedule
10.12.2013
setInterval
:window.onload = function(){setInterval(clk, 1000);}};
- person Rob W   schedule 12.02.20121000
? - person sandbox   schedule 12.02.2012setInterval
, которая отвечает на ваш вопрос. - person Michelle Tilley   schedule 12.02.20121000
= 1000 миллисекунд = 1 секунда. Обычно он запускает функцию каждую секунду. - person Rob W   schedule 12.02.2012setInterval
для периодического запуска некоторого кода. - person Rob W   schedule 12.02.2012