web-dev-qa-db-fra.com

Quel est le moyen le plus simple d'appeler une fonction toutes les 5 secondes dans jQuery?

JQuery, comment appeler une fonction toutes les 5 secondes.

Je cherche un moyen d'automatiser le changement d'images dans un diaporama.

Je préférerais ne pas installer d'autres plugins tiers si possible.

482
ensnare

Vous n'avez pas besoin de jquery pour cela, en javascript simple, ce qui suit fonctionnera!

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

Pour arrêter la boucle, vous pouvez utiliser

clearInterval() 
863
Doug Neiner

vous pouvez enregistrer un intervalle sur la page en utilisant setInterval, c'est-à-dire:

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

Juste un petit pourboire pour la première réponse. Si votre fonction est déjà définie, référencez-la mais n'appelez pas !!! Donc, ne mettez pas de parenthèses après le nom de la fonction. Juste comme:

my_function(){};
setInterval(my_function,10000);
42

Les fonctions mentionnées ci-dessus s’exécutent peu importe si elles se sont terminées lors de la précédente invocation ou non, celle-ci est exécutée toutes les x secondes une fois l’exécution terminée.

// 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

Un bon exemple où souscrire un setInterval () et utiliser un clearInterval () pour arrêter la boucle forever:

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

var myVar = setInterval(myTimer, 1000);

appelez cette ligne pour arrêter la boucle:

 clearInterval(myVar);
30
Ricardo Figueiredo

setInterval et setTimeout peuvent fonctionner pour vous (comme @Doug Neiner et @John Boker ont écrit les deux pointent maintenant sur setInterval).
Voir ici pour plus d'explications à propos des suites pour voir quelles suites vous aimez le plus et comment les arrêter.

9
Dror

vous pouvez utiliser window.setInterval et le temps doit être défini en millisecondes, dans le cas ci-dessous, la fonction appellera après chaque seconde (1000 millisecondes)

<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