【发布时间】:2017-04-18 13:53:11
【问题描述】:
我正在尝试使用 Javascript 中的 setInterval 和 clearInterval 方法,但遇到了问题。我正在尝试做的是在大多数情况下名义上每“x”秒调用一个函数,但在某些时间间隔内,更频繁地运行。我附上了一些代码,这些代码是迄今为止我所拥有的东西的不完整的骨架,这是一个简单的概念证明 - 在这个例子中,每 10 秒显示一次分钟,否则在 30 到 40 分钟之间(如虚拟值,看看我是否可以让它工作),显示每 1 秒更新一次。但我意识到我无法检查 setInterval 是否仍在运行以及如何重新启动它(作为“myVar”变量)。
<!DOCTYPE html>
<html>
<body>
<p id="demo">Just testing...</p>
<script>
var d = new Date();
myVar = setInterval( informUser, 10000);
function informUser()
{
if ( d.getMinutes()>30 && d.getMinutes()<40 ) // every second
{
clearInterval(myVar);
mvVar = setInterval( informUser, 1000);
document.getElementById("demo").innerHTML = d.getMinutes();
}
else // else 10 seconds
{
document.getElementById("demo").innerHTML = d.getMinutes();
}
}
</script>
</body>
</html>
正如我所说,代码非常不完整,因为我遇到了一堵砖墙!一旦我有一些工作,我可以让它更复杂一点。 编辑:
感谢您对语法的 cmets 但这不是这里的全部问题。 目前代码所做的是每 10 秒将分钟输出到屏幕上,直到达到整点后 31 分钟。然后它停止计时器,并以 1 秒的间隔启动它。 9 分钟过去后,代码停止,因为计时器没有启动。
我想做的是在“else // else 10 seconds”部分查看 myVar 是否为空;如果是,则以 10 秒的间隔重新启动计时器。
【问题讨论】:
-
请注意,
setInterval函数的第一个参数应该是对函数的引用(而不是对函数的调用,除非该调用返回对另一个函数的引用功能)。你应该使用setInterval(informUser, X) -
谢谢,我会在上面修改(如果可以的话)
-
您可以更改,但这也是您问题的答案。用您自己的代码更新它并检查。它应该可以解决您的问题。
-
你查看我最后的评论了吗?那里还有问题吗?
-
我的代码还是有问题。我正在尝试根据计算机的内部计时器为计时器提供两个不同的值。
标签: javascript setinterval clearinterval