Какой самый простой способ вызывать функцию каждые 5 секунд в jQuery? [Дубликат]

410

JQuery, как вызвать функцию каждые 5 секунд.

Я ищу способ автоматизировать смену изображений в слайд-шоу.

Я бы предпочел не устанавливать какие-либо другие сторонние плагины, если это возможно.

  • 112
    +1 за «Я бы не стал устанавливать сторонние плагины, если это возможно».
  • 9
    @nickf: Потому что это смешно, потому что jQuery уже сторонний? (Но не совсем, потому что я уверен, что он уже использует jQuery для других вещей)
Показать ещё 4 комментария
Теги:
timer
jquery-plugins

7 ответов

739
Лучший ответ
window.setInterval(function(){
  /// call your function here
}, 5000);
  • 1
    Я чувствую запах внутри работы ..
  • 31
    Кто сказал, что я не могу обновлять каждые 2 секунды: D
Показать ещё 8 комментариев
81

вы можете зарегистрировать интервал на странице с помощью setInterval, то есть:

setInterval(function(){ 
    //code goes here that will be run every 5 seconds.    
}, 5000);
  • 1
    setTimeout запускается только один раз.
  • 2
    да, я исправил это, пытаясь набрать слишком быстро, знал, что ответ будет быстро :)
Показать ещё 6 комментариев
30

Просто маленький совет для первого ответа. Если ваша функция уже определена, обратитесь к функции, но не вызывайте ее!!! Поэтому не помещайте круглые скобки после имени функции. Также как:

my_function(){};
setInterval(my_function,10000);
  • 6
    Если вы не позвоните один раз, первый звонок будет через 10000 мс. Если вы хотите сразу, вы все равно можете позвонить как обычно один раз.
  • 0
    Этот ответ сэкономил мне много времени; Мне было бы интересно, почему мою функцию не вызывали целую вечность. К счастью, я наткнулся на этот ответ; +1
22

Вышеупомянутые функции выполняются независимо от того, завершились ли они в предыдущем вызове или нет, это выполняется через каждые x секунд после завершения выполнения

// IIFE
(function runForever(){
  // Do something here
  setTimeout(runForever, 5000)
})()

// Regular function with arguments
function someFunction(file, directory){
  // Do something here
  setTimeout(someFunction, 5000, file, directory)
  // YES, setTimeout passes any extra args to
  // function being called
}
7

Хороший пример того, где можно подписаться на setInterval() и использовать clearInterval(), чтобы остановить цикл forever:

http://www.w3schools.com/jsref/met_win_clearinterval.asp

function myTimer() {
    console.log(' each 1 second...');
}

var myVar = setInterval(myTimer, 1000);

вызовите эту строку, чтобы остановить цикл:

 clearInterval(myVar);
7

Оба setInterval и setTimeout могут работать для вас (, как @Doug Neiner и @John Boker написал оба теперь указывают на setInterval).
См. здесь для получения более подробного объяснения как для того, чтобы увидеть, какие номера вы больше всего и как остановить каждый из них.

0

вы можете использовать window.setInterval, и время должно определяться в миллисекундах, в следующем случае функция будет вызывать через каждую секунду (1000 миллисекунд)

<script>
  var time = 3670;
window.setInterval(function(){

  // Time calculations for days, hours, minutes and seconds
    var h = Math.floor(time / 3600);
    var m = Math.floor(time % 3600 / 60);
    var s = Math.floor(time % 3600 % 60);

  // Display the result in the element with id="demo"
  document.getElementById("demo").innerHTML =  h + "h "
  + m + "m " + s + "s ";

  // If the count down is finished, write some text 
  if (time < 0) {
    clearInterval(x);
    document.getElementById("demo").innerHTML = "EXPIRED";
  }

  time--;
}, 1000);


</script>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню