@sv2204

Как правильно зациклить функцию?

Как правильно зациклить функцию:
function F1(sname, cls){
$.get('file.php?stname=' + sname, function(data){
$('#' + cls).html(data);
});
setTimeout(F1, 5000);}

$("td[data-pll]").each(function () {
ar startat = $(this).attr("data-pl");
endat = $(this).attr("data-plll");
F1(startat, endat);
});

функция выполняется только один раз setTimeout не работает, подскажите где ошибка?
  • Вопрос задан
  • 1276 просмотров
Решения вопроса 1
@sv2204 Автор вопроса
Всем спасибо! нашел решение:
setTimeout(function() {F1(sname, cls);}, 5000);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
mbeloshitsky
@mbeloshitsky
Вебдев, систем оперейшонс, ж.д. автоматика
Используйте функцию setInterval вместо setTimeout.
Ответ написан
Комментировать
Deonisius
@Deonisius
Родился в 11110110111 году, 11000 января.
1. Во-первых, вызывать повторно функцию лучше после успешного завершения ajax-запроса. Т.е. перенести setTimeout в "success callback ". И setInterval - не очень хорошее решение для данной задачи, как предлагали вам выше.
2. Во-вторых, повторный вызов функции, как это сделано у вас, ни к чему хорошему не приведет, т.к. вы не передаёте в функцию аргументы.
3. В-третьих, оглядываясь на п.2, непонятно, какие именно аргументы нужно передавать: то ли из предыдущего вызова, то ли необходимо повторно пробежаться по элементам "td[data-pll]", собрать из низ данные и передать в функцию.
Синтаксис для вызова функции с передачей ей параметров, может быть и таким:
setTimeout(func, delay, [param1, param2, ...]);
// т.е. в вашем случае:
setTimeout(F1, 5000, sname, cls);
Ответ написан
Комментировать
astralo
@astralo
для "спасибо" есть кнопка [Нравится]
setTimeout выполняет код только один раз!
вам нужен setInterval
работает по тому же принципу javascript.ru/setInterval
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы