setInterval只在if(){}块内部工作

setInterval only working inside of if(){} block

本文关键字:内部 工作 只在 if setInterval      更新时间:2023-09-26

所以我认为有一些关键的东西可以从我遇到的情况中挑选出来,并希望一些经验可以解释它。

当我运行这段代码时,它不起作用:

t5 = "nikolas"+t4;
setInterval(adds,250);
function adds(){
    if (t4 < 100){
        t4=t4+1;
    }    
    else{
        return;
    }
};

this does does work:

t5 = "nikolas"+t4;
adds(t4);
function adds(a){
    if (a < 100){
        a=a+1;
        setInterval(t4=a,250);
    }
    else{
        return;
    }
};

TL;DR: setInterval似乎在if块内部工作,而不是在外部。当它工作时,它显示nikolast4,其中t4是一个整数,从1-100"滴答"(例如。strong text nikolas0 nikolas1 nikolas2 nikolas3 nikolas4)

这段代码(由于我正在编程的应用程序)应该每250ms刷新一次(但对整个刷新部分持保留态度,并不是100%确定)。

下面的代码是完全功能的,看起来非常像您的非工作示例。

你可以在这里查看:http://jsbin.com/ofezip/1/edit

所以我猜你对变量的范围有问题。

window.onload = function()  {
   var myOutput = document.createElement("output"); 
   document.body.appendChild(myOutput);
   var t4 = 0;
   var helloInterval = setInterval(adds,250);
   function adds(){
          if (t4 < 10){
              t4++;
              myOutput.value = "hello " + t4;
          }    
          else {
              myOutput.value = "goodbye" ;
              clearInterval(helloInterval);      
              return;
        }
   }
};