我很难弄清楚如何通过使用位于此函数外部的clearInterval来停止在嵌套函数中调用的Setinterval。
Setinterval是在DOM的0级声明的(这说的是正确的吗?)。它是嵌套在函数中的。
function interval()
{
setInterval(function calcRealPos(){
console.log("realPos="+realPos)
realPos+=10;
},500);
}
然后在函数中调用函数interval():
function move(distance)
{
// Movement using translate
if (distance==1933.67)
{
interval();
}
}
我希望每当有人按下“D&D”时清除间隔。清除间隔在另一个函数中,它不嵌套在任何其他函数中:
function releasebtn(event)
{
var unpressBtn = event.keyCode;
if(unpressBtn==68)
{
clearInterval(interval());
}
}
document.addEventListener('keypress', pushbtn);
document.addEventListener('keyup', releasebtn);
谢谢!
答案 0 :(得分:0)
clearInterval
接受setInterval
间隔的ID。您需要将间隔ID存储在变量中,然后将其传递给clearInterval
,如下所示:
function calcRealPos() { console.log('foo'); }
// Set the interval and store its ID
intId = setInterval(calcRealPos, 500);
// Later, when you want to clear the interval, use this
clearInterval(intId);
答案 1 :(得分:0)
为了停止setInterval,您需要为它指定一个引用(在这种情况下是一个全局变量)。这是为了确保javascript知道停止/清除哪个setInterval。
您可以轻松地重写setInterval函数以显示此
function interval()
{
myinterval=setInterval(function calcRealPos(){
console.log("realPos="+realPos)
realPos+=10;
},500);
}
现在在你的releasebtn函数中,你可以像
一样停止它function releasebtn(event)
{
var unpressBtn = event.keyCode;
if(unpressBtn==68)
{
clearInterval(myinterval);
}
}