Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何停止嵌套在函数中且clearInterval在此函数之外的setInterval?_Javascript_Setinterval_Clearinterval - Fatal编程技术网

Javascript 如何停止嵌套在函数中且clearInterval在此函数之外的setInterval?

Javascript 如何停止嵌套在函数中且clearInterval在此函数之外的setInterval?,javascript,setinterval,clearinterval,Javascript,Setinterval,Clearinterval,我很难弄明白如何通过使用位于嵌套函数外部的clearInterval来停止在嵌套函数中调用的Setinterval function interval() { setInterval(function calcRealPos(){ console.log("realPos="+realPos) realPos+=10; },500); } Setinte

我很难弄明白如何通过使用位于嵌套函数外部的clearInterval来停止在嵌套函数中调用的Setinterval

 function interval()
        {
           setInterval(function calcRealPos(){
               console.log("realPos="+realPos)
             realPos+=10;
              },500);
         }
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”时,我想清除间隔。清除间隔位于另一个未嵌套在任何其他函数中的函数中:

function releasebtn(event)
{

 var unpressBtn = event.keyCode;

 if(unpressBtn==68)
    {
       clearInterval(interval());

    }

 }


  document.addEventListener('keypress', pushbtn);
  document.addEventListener('keyup', releasebtn);
谢谢

接受
setInterval
interval的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);

为了停止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);

    }

 }

var区间;函数interval(){interval=setInterval(/*code*/)}