werber
@werber
Системный администратор Windows

Почему не работает setInterval даже на самом простом примере?

Решил воспользоваться цикличным повторением кода на JQuery. Для этого взял функцию setInterval, которая по своей логике должна повторять переданный ей код или функцию через указанное количество времени. Вот что я написал для примера:
var interv = setInterval(alert("1"),4000);
Этот код не заработал как надо. Он выполняется ОДИН раз. Больше не запускается. Я даже через инструментарий разработчика проверил, событие не запускается. Даже через console.log вёл лог запуска, этот код запустился единожды и потух. Я даже из JS файла весь остальной код убрал, оставил так:
$(document).ready(function () {
   var interv = setInterval(alert("1"),4000);
});

И так не работает! Даже в разных браузерах проверил. Что я не так делаю?
  • Вопрос задан
  • 3637 просмотров
Решения вопроса 1
@YNile
JS Developer
setInterval('alert("1")',4000)

// или

setInterval(function() {
    alert("1");
},4000)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Что я не так делаю?
Не понимаете, что setInterval принимает в качестве аргументов.
Ответ написан
Комментировать
SPAHI4
@SPAHI4
реактовцы - это не девы, а прокидыватели пропсов
setInterval(alert("1"),4000);
Первым параметром надо передавать функцию, которая будет выполняться (или ее код).
Например,
// так - не лучший вариант

setInterval('alert("1")',4000)

// Либо так 

var func = function() {
  return alert("1");
}
setInterval(func,4000);

// Либо так 

setInterval(function() {
  return alert("1");
}, 4000);

// Либо вообще так (es6) 

setInterval(() => alert("1"), 4000);

Вы же передаёте результат выполнения функции alert(), а имменно - всегда undefined. При том выполнение кода блокируется до тех пор, когда alert не был принят.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы