鉴于此代码:
bob = setInterval(function, 1000);
clearInterval(bob);
现在有没有办法知道该间隔是否已清除?
目前,我自己通过取消设置''来跟踪这一点bob
,但我很好奇我的额外代码行是否不必要:
clearInterval(bob);
bob = null;
if (!bob) itIsCleared();
谢谢!
鉴于此代码:
bob = setInterval(function, 1000);
clearInterval(bob);
现在有没有办法知道该间隔是否已清除?
目前,我自己通过取消设置''来跟踪这一点bob
,但我很好奇我的额外代码行是否不必要:
clearInterval(bob);
bob = null;
if (!bob) itIsCleared();
谢谢!
的返回值setInterval
只是您用来传递回. 它不是带有任何附加信息的结构化对象,也不会在您调用.clearInterval
clearTimeout
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 的方法是一种很好的方法。只要确保 !bob 如果 bob 恰好为 0,它就不会返回 true。:D
所以这是一个很晚的答案,但如果你做这样的事情
this.myInterval = setInterval(....);
this.myInterval = clearInterval(this.myInterval);
它将强制变量myInterval
未定义,因此您可以通过执行检查间隔的清除if(!this.myInterval)