如何使用此函数外的clearInterval来停止嵌套在函数中的setInterval?

时间:2016-08-10 17:06:52

标签: javascript setinterval clearinterval

我很难弄清楚如何通过使用位于此函数外部的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);

谢谢!

2 个答案:

答案 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);

    }

 }