2009-09-24 24 views
29

Biorąc pod uwagę ten kod:Sprawdzanie, czy wywołano ClearInterval?

bob = setInterval(function, 1000); 
clearInterval(bob); 

Czy istnieje obecnie sposobem, aby wiedzieć, że jeśli przedział został skasowany?

Obecnie mogę śledzić ten sam, przez wyłączające „bob”, ale jestem ciekawa czy moja dodatkowa linia kodu jest zbędne:

clearInterval(bob); 
bob = null; 
if (!bob) itIsCleared(); 

Dzięki!

Odpowiedz

30

Wartość zwracana setInterval tylko unikatowy identyfikator użyć, aby przejść z powrotem do clearInterval. Nie jest to obiekt strukturalny z żadnymi dodatkowymi informacjami, ani nie jest ustawiony na wartość null, gdy wywołujesz clearTimeout.

+0

Więc robię to dobrze :-DDziękuję! – swajak

5

bob zawiera tylko identyfikator przedziału używanego do wyczyszczenia go. Kiedy wywołujesz clearInterval, otrzymuje interwał związany z tym id i usuwa go. Identyfikator w ogóle się nie zmienia.

see here for demonstration

przykład:

<html> 
<head> 
<title>Javascript clearInterval</title> 
</head> 
<body onload="startInterval();"> 

<center> 
    <div id="myTime"></div> 

    <input type="button" value="start Interval" onclick="startInterval();" /> 

    <input type="button" value="stop Interval" onclick="stopInterval();" /> 
</center> 

<script language="javascript"> 

var interval; 

function startInterval() 
{ 
    // setInterval of 1000 milliseconds i.e. 1 second 
    // to recall the startTime() method again n again 
    interval = setInterval("startTime();", 1000); 
} 

function startTime() 
{ 
    // Date object to get current time 
    var timeFormat = new Date(); 

    // set the current time into the HTML div object. 
    document.getElementById('myTime').innerHTML = timeFormat.toLocaleTimeString(); 
} 

function stopInterval() //***********IMPORTANT FUNC****************** 
{ 
    // clearInterval to stop the setInterval event 
    alert(interval); 
    clearInterval(1); 

} 

</script> 

</body> 
</html> 

To pokaże id przedziale'S (zwrócony przez setInterval wcześniej). Jeśli wiesz, że identyfikator przedziału ma wartość 1, możesz po prostu użyć polecenia clearInterval (1), aby wyczyścić przedział. Zatem twój sposób używania ustawienia boba na wartość null to dobry sposób na zrobienie tego. Tylko pamiętaj, że! Bob nie zwraca wartości true, jeśli wartość boba wynosi 0.: D

Powiązane problemy