2016-07-09 18 views
-1
var theintrvl = function() { 
    setInterval(function() { 
    somefunction() 
    }, 3000) 
} 

die somefunction ist nicht wichtig - alles funktioniert gut, aber! Wenn ich versuche, das Intervall zu löschen, wird es nicht gelöscht. Hier ist, was ich versucht:Löschen setinterval funktioniert nicht?

document.getElementById('clearme').addEventListener('click', function() { 
    clearInterval(theintrvl); 
}); 

Ich habe auch versucht somefunction stattdessen die theintrvl, aber nichts!

+2

Sie müssen speichern die intervalID durch die setInterval Aufruf zurückgegeben. Im Moment speichern Sie eine Funktion – Willian

+0

var test = setInterval (function() { somefunction() }, 3000); clearInterval (Test); – Jain

Antwort

2

Sie müssen es nicht in einer Funktion auf den ersten Platz wickeln. Speichern Sie die zurückgegebene Wert von setInterval Funktion

var theintrvl = 
    setInterval(function() { 
    somefunction() 
    }, 3000); 
+1

Oder wickeln Sie es nicht in einer anonymen Funktion an erster Stelle. –

+0

@SpencerWieczorek tatsächlich wurde die anonyme Funktion nicht selbst aufgerufen. so hatte 'theintrvl' einfach eine Funktionsreferenz, nicht den Intervallzeitgeber. – gurvinder372

+0

Warum also verpacken Sie noch immer eine Funktion in einer anonymen Funktion? – Bergi

2

Sie benötigen

var myinterval = setInterval(function, time) 

haben und dann löschen Sie

clearInterval(myinterval) 

tun würde, Sie möchten vielleicht von außen, um loszuwerden, Funktion aber, weil myinterval von außen nicht zugänglich wäre theintervl

Eine weitere Sache, könnte man

Hoffnung tun

setInterval(somefunction, 3000) 

Statt dem Aufruf der Funktion von einer anonymen Funktion betrachten, das hilft!

0

Versuchen Sie folgendes:

var test = setInterval(somefunction, 3000); 
clearInterval(test); 
Verwandte Themen