2010-05-07 10 views
10

Tak, mam nieskończoną pętlę do pracy w tej funkcji przy użyciu setInterval dołączonej do onClick. Problem polega na tym, nie mogę go zatrzymać używając clearInterval w onClick. Myślę, że dzieje się tak dlatego, że kiedy dołączę clearInterval do onClick, zabije on określony interwał, a nie całą funkcję. Czy jest coś, co mogę zrobić, aby zabić wszystkie interwały przez onClick?Czy istnieje sposób na zabicie pętli setInterval za pomocą przycisku Onclick

Oto mój .js file i rozmowy Robię to

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. 

Odpowiedz

-1

Czy generation(); połączenia setTimeout sobie zamiast setInterval. To można użyć trochę, jeśli logika w funkcji, aby uniemożliwić jej uruchomienie z łatwością setTimeout.

var genTimer 
var stopGen = 0 

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

}

+0

To nie bezpośrednio odpowiedzieć na pytanie „Czy istnieje jakiś sposób, aby zabić setInterval pętlę poprzez onclick przycisku” –

4

clearInterval nakłada na wartości zwracanej setInterval coś takiego:

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 (przedział === null) powinny być if (przedział! == null) – Hatim

+0

@Hatim: Naprawiono. – kennytm

20

setInterval zwraca uchwyt, trzeba, że ​​uchwyt, dzięki czemu można je wyczyścić

najłatwiej, utwórz var dla uchwytu w nagłówku html, następnie w swoim onclick użyj 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

Powiązane problemy