このコードを考えると:
bob = setInterval(function, 1000);
clearInterval(bob);
その間隔がクリアされたかどうかを知る方法はありますか?
現在、私は 'bob
'の設定を解除することでこれを自分で追跡していますが、追加のコード行が不要かどうか知りたいです。
clearInterval(bob);
bob = null;
if (!bob) itIsCleared();
ありがとう!
setInterval
の戻り値は、clearInterval
に返すために使用する一意のIDにすぎません。これは、追加情報を持つ構造化オブジェクトではなく、clearTimeout
を呼び出したときにnullに設定されることもありません。
bobには、それをクリアするために使用される間隔のIDのみが含まれます。 clearIntervalを呼び出すと、そのIDに関連付けられている間隔が取得され、クリアされます。 IDはまったく変更されません。
例:
<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>
これにより、間隔のIDが表示されます(以前にsetIntervalによって返された)。間隔のIDが1であることがわかっている場合は、clearInterval(1)を使用して間隔をクリアできます。したがって、bobをnullに設定する方法は、それを行うための良い方法です。ボブがたまたま0の場合、!bobがtrueを返さないことを確認してください。:D