Не работает setInterval
(setTimeout),
проблемы, ошибки JavaScript.
Написать о возможности
задавать временные
интервалы для периодического
или привязанного
к времени выполнения
каких-то функций
побудила очень
плохая их реализация в самом стандарте JavaScript
и еще худшая реализация
в JavaScript-движках
конкретных
браузеров.
Так, в справочнике по JavaScript
Вы можете прочитать, что для выполнения какой-то
функции funct()
с заданным
интервалом нужно написать
код вида:
timer1 = setInterval(“funct(parameters)”,
100)
- где 100 это интервал времени в миллисекундах через который будет периодически выполняться функция funct().
Так вот при такой записи она не будет выполняться. Не будет она выполняться, даже если она без параметров, или записана без кавычек. Будет выполняться только следующий код:
timer1 = window.setInterval(
funct ,
100)
без кавычек без скобок для аргументов – только само название функции – funct и обязательно поставить window перед setInterval.
Такой нестандартный код на самом деле накладывает некоторые ограничения на вызываемую периодически функцию – она должна быть без аргументов, а изменять значения переменных, определенных вне ее (для того, чтобы можно было подсчитать число уже прошедших интервалов времени).
Т.е. внутри функции funct должна быть проверка критерия останова ее периодического выполнения и в случае срабатывания критерия должна выполниться строка:
clearInerval(timer1)
которая прекратит заданное периодическое выполнение функции funct.
Это все проверено только в
браузере Internet Explorer.