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.
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()
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);
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);
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
}
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);
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.
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>