Boucle toutes les cinq secondes en Javascript
Je suis en train d'écrire une simple boucle en JS (JQuery) qui met à jour une image toutes les cinq secondes, pour un total de 15 secondes (donc trois boucles), et puis se ferme.
Il devrait aller comme ça:
- Attendre cinq secondes
- Exécuter
- Attendre cinq secondes
- Exécuter
- Attendre cinq secondes
- Exécuter
- Quitter
Mais setTimeout
ne semble fonctionner.
Comme un test, j'ai essayé:
function doSetTimeout(i) {
setTimeout(function() { alert(i); }, 5000);
}
for (var i = 1; i <= 5; ++i)
doSetTimeout(i);
Ne fonctionne pas: http://jsfiddle.net/ubruksco/
J'ai aussi essayé:
for(var i = 1; i <= 5; i++) {
(function(index) {
setTimeout(function() { alert(index); }, 5000);
})(i);
}
Ne fonctionne pas: http://jsfiddle.net/Ljr9fq88/
- Vous êtes à la recherche pour
setInterval(function(){...}, 5000);
developer.mozilla.org/en-US/docs/Web/API/WindowTimers/... Vous pouvez la stocker intervalle dans une variable et de l'effacer après une certaine condition est remplie... dans votre cas, après la 5ème itération var i = 1; i <= 5; i++
ne fera jamais de trois boucles- Il aussi de ne pas changer une image. Comme je l'ai dit, ce sont tout simplement de test des boucles.
Vous devez vous connecter pour publier un commentaire.
vous pouvez simplement créer un intervalle et le tuer après la 3e fois
var interval = { }
La raison en est que votre settimeout prend fin en même temps (au bout de 5 secondes), car le délai de votre code est basé sur 5 secondes
Ce que vous voulez faire est de changement le délai d'attente le temps en fonction de votre index (et donc auront des heures de début différentes.
(Également besoin de 3 itérations, donc édité la boucle pour vous)
clearTimeout
les trois? Ou après chaque tour de boucle?Votre premier exemple est presque là. Vous avez juste besoin de multiplier les temps de retard par l'indice de boucle pour obtenir le droit de retard.
http://jsfiddle.net/ubruksco/3/
Le rendre facile! Vous n'avez pas besoin de boucle, vous avez juste besoin de trois exécutions.
Mais, si vous voulez vraiment une boucle:
En supposant que vous êtes à l'aide de jQuery (pour manipuler le DOM),
vous pouvez essayer ceci:
Avec setTimeout:
Mais vous pouvez également utiliser setInterval, peut-être plus approprié.
Vous pouvez utiliser
setInterval
la place et de suivre combien de fois vous avez exécuté la fonction. Que juste l'utilisationclearInterval()
pour arrêter l'exécution.JS:
HTML:
Si vous voulez d'abord attendre 5 secondes, ne l'appelez pas
execute()
sur domready.Vous voulez setInterval() à la place