2010-05-07 2 views
10

Donc, j'ai une boucle infinie pour travailler dans cette fonction en utilisant setInterval attaché à un OnClick. Le problème est, je ne peux pas l'arrêter en utilisant clearInterval dans un onClick. Je pense que c'est parce que quand j'attache un clearInterval à un onClick, il tue un intervalle spécifique et pas la fonction tout à fait. Y at-il quelque chose que je peux faire pour tuer tous les intervalles grâce à un onClick?Y at-il un moyen de tuer une boucle setInterval à travers un bouton OnClick

Voici mon .js file et les appels que je fais sont

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. 

Répondre

-1

Avez generation(); appel setTimeout à lui-même plutôt setInterval. C'était vous pouvez utiliser un peu si la logique dans la fonction pour l'empêcher de courir setTimeout assez facilement.

var genTimer 
var stopGen = 0 

function generation() { 
    clearTimeout(genTimer) ///stop additional clicks from initiating more timers 
    . . . 
    if(!stopGen) { 
     genTimer = setTimeout(function(){generation()},1000) 
    } 
} 

}

+0

Cela ne répond pas directement à la question « Est-il possible de tuer une boucle setInterval par un bouton onclick » –

4

clearInterval est appliqué sur la valeur de retour de setInterval, 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; 
    } 
} 
+0

if (intervalle === nul) doit être si (intervalle! == null) – Hatim

+0

@Hatim: Fixe. – kennytm

20

setInterval retourne une poignée, vous avez besoin cette poignée, vous pouvez donc effacer

plus facile, créez un var pour le handle dans votre tête html, puis dans votre onclick utilisez le var

// in the head 
var intervalHandle = null; 

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

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

http://www.w3schools.com/jsref/met_win_clearinterval.asp

Questions connexes