12
votes

Y a-t-il un moyen de tuer une boucle seinterval via un bouton OnClick

Donc, j'ai une boucle infinie pour travailler dans cette fonction en utilisant seinterval attaché à un onclick. Le problème est que je ne peux pas l'arrêter d'utiliser ClearInterval dans un ONCLICK. Je pense que c'est parce que lorsque j'attache un clarté sur un onclick, il tue un intervalle spécifique et non la fonction tout à fait. Y a-t-il quelque chose que je puisse faire pour tuer tous les intervalles em> à travers un oncclick?

Voici mon . JS Fichier et les appels que je fais sont P>

input type="button" value="generate" onClick="generation();

input type="button" value="Infinite Loop!" onclick="setInterval('generation()',1000);"

input type="button" value="Reset" onclick="clearInterval(generation(),80;" // This one here is giving me trouble.


0 commentaires

4 Réponses :


-1
votes

avoir génération (); appel settimeout à lui-même au lieu de setInterval . C'était que vous pouvez utiliser un peu si la logique dans la fonction pour l'empêcher d'exécuter Settimeout assez facilement. XXX

}


1 commentaires

Cela ne répond pas directement à la question de "Y a-t-il un moyen de tuer une boucle seinterval via un bouton OnClick"



4
votes

ClearInterval code> est appliqué sur la valeur de retour de setInterval code>, comme ceci:

var interval = null;
theSecondButton.onclick = function() {
    if (interval === null) {
       interval = setInterval(generation, 1000);
    }
}
theThirdButton.onclick = function () {
   if (interval !== null) {
       clearInterval(interval);
       interval = null;
   }
}


2 commentaires

Si (intervalle === null) devrait être si (intervalle! == null)


@Hatim: corrigé.



22
votes

setInterval retourne une poignée, vous avez besoin de cette poignée afin que vous puissiez le effacer

plus facile, créez un VaR pour la poignée dans votre tête HTML, puis dans votre ONCLICK Utilisez le var p>

// in the head
var intervalHandle = null;

// in the onclick to set
intervalHandle = setInterval(....

// in the onclick to clear
clearInterval(intervalHandle);


1 commentaires

Ça ne marche pas pour moi :( dit que l'ID d'intervalle est null



-1
votes

Démo en direct

C'est tout ce dont vous avez besoin! < Pré> xxx


0 commentaires