2009-09-24 5 views
29

Dato questo codice:Controllare se è stato chiamato clearInterval?

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

C'è ora un modo per sapere se tale intervallo è stata cancellata?

Attualmente, tenere traccia di questo me stesso, dal disinserimento 'bob', ma io sono curioso di sapere se la mia linea extra di codice è inutile:

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

Grazie!

risposta

30

Il valore di ritorno di setInterval è solo un ID univoco che si utilizza per tornare a clearInterval. Non è un oggetto strutturato con informazioni aggiuntive, né viene impostato su null quando si chiama clearTimeout.

+0

Quindi lo sto facendo bene MrGreen Grazie! – swajak

5

bob contiene solo un ID dell'intervallo utilizzato per cancellarlo. Quando chiami clearInterval, ottiene l'intervallo associato a quell'id e lo cancella. L'ID non è cambiato affatto.

see here for demonstration

esempio:

<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> 

Questo ti mostrerà l'ID del dell'intervallo (restituito da setInterval in precedenza). Se si conosce che l'id dell'intervallo è 1, è possibile utilizzare clearInterval (1) per cancellare l'intervallo. Quindi il tuo modo di usare l'impostazione di bob su null è un buon modo per farlo. Basta essere sicuri che! Bob non restituisce true se il bob sembra essere 0.: D