it-roy-ru.com

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

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

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

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

482
ensnare

Вам не нужен JQuery для этого, в простом JavaScript, следующее будет работать!

window.setInterval(function(){
  /// call your function here
}, 5000);

Чтобы остановить цикл вы можете использовать

clearInterval() 
863
Doug Neiner

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

setInterval(function(){ 
    //code goes here that will be run every 5 seconds.    
}, 5000);
99
John Boker

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

my_function(){};
setInterval(my_function,10000);
42
Francisco López-Sancho

Функции, упомянутые выше, выполняются независимо от того, были ли они завершены в предыдущем вызове или нет, эта функция запускается через каждые 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
}
31
Steel Brain

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

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

var myVar = setInterval(myTimer, 1000);

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

 clearInterval(myVar);
30
Ricardo Figueiredo

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

9
Dror

вы можете использовать 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>
3
erdeepak