Quelle est la meilleure façon d'appeler une fonction Toutes les 5 secondes à jQuery? [dupliquer]

cette question a déjà une réponse ici:

  • appelant une fonction Toutes les 60 secondes 8 réponses

JQuery, comment appeler une fonction Toutes les 5 secondes.

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

je préfère ne pas installer d'autres plugins tiers si possible.

439
demandé sur Community 2010-01-31 10:31:35

7 réponses

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() 
792
répondu Doug Neiner 2018-08-29 10:33:36

vous pouvez enregistrer un intervalle sur la page en utilisant setInterval, i.e.:

setInterval(function(){ 
    //code goes here that will be run every 5 seconds.    
}, 5000);
89
répondu John Boker 2010-01-31 08:17:54

un petit conseil pour la première réponse. Si votre fonction est déjà définie, référez la fonction mais ne l'appelez pas!!! Alors ne mettez pas de parenthèses après le nom de la fonction. Comme:

my_function(){};
setInterval(my_function,10000);
36
répondu Francisco López-Sancho 2014-07-23 13:12:32

les fonctions mentionnées ci-dessus s'exécutent peu importe si elles ont été complétées dans l'invocation précédente ou non, celle-ci court après 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
}
29
répondu Steel Brain 2017-06-21 02:14:32

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);
18
répondu Ricardo Figueiredo 2018-08-21 19:17:12

les deux setInterval et setTimeout peuvent travailler pour vous ( comme @Doug Neiner et @John Boker ont écrit les deux pointent maintenant vers setInterval ).

Voir ici pour plus d'explications sur les deux pour voir quelles suites vous le plus et comment arrêter chacun d'eux.

9
répondu Dror 2013-02-21 23:00:01

vous pouvez utiliser la fenêtre.setInterval et time doivent être définis en milisecondes, dans le cas ci-dessous la fonction appellera après chaque seconde (1000 milisecondes)

<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
répondu erdeepak 2017-01-12 12:48:52