无法使javascript间隔工作

Cant get javascript intervals to work

本文关键字:工作 javascript      更新时间:2023-09-26

所以我对javascript有点陌生,但我试图通过点击按钮来制作进度条和其他一些功能。im字符串使用javascript中设置的间隔来计时条,这是我迄今为止的js:

//Javascript Document
function progress(){
 Var uno = setTimeout("uno()", 3000);
  uno(){
   document.getElementById("title").innerHTML = "Connecting...";
   document.getElementById("progressInner").style.display = 'block';
   document.getElementById("progressInner").style.width = '20px';
  }   
}

据我所知,这就是它的工作原理,但我对此持怀疑态度,因为我似乎正在设置一个变量uno,但没有对它做任何事情……从我的php背景来看,这不是工作原理:p你们能给我什么建议吗?我的html在这里:http://jsbin.com/apoboh/1/edit

现在,它什么都不做,它给了我:Uncaught ReferenceError:进度没有定义

首先,您使用的是setTimeout而不是setInterval。前者触发回调一次,后者以设定的间隔无限期地触发。

其次,这些方法返回一个可以用来取消setInterval的令牌,而不是

function startProgress(){
     // only start progress if it isn't running
     if (!App.progressToken) {  // App is you apps namespace
         App.progressToken = setInterval(function(){
             document.getElementById("title").innerHTML = "Connecting...";
             document.getElementById("progressInner").style.display = 'block';
             document.getElementById("progressInner").style.width = '20px';
         }, 3000);         
    }
}

稍后,当您想停止时:

function stopProgress(){
   clearInterval(App.progressToken);`
   delete App.progressToken
}

变量uno只是保持您刚刚设置的超时的句柄。如果需要,可以稍后通过调用clearTimeout()在执行之前使用它来清除超时。

如果不需要清除超时,那么根本没有理由存储句柄。

function progress(){
  function uno(){
   document.getElementById("title").innerHTML = "Connecting...";
   document.getElementById("progressInner").style.display = 'block';
   document.getElementById("progressInner").style.width = '20px';
  } 
 var timeoutFunc = setTimeout(uno, 3000);  
}

您将一个函数传递给setTimeout,它稍后将调用该函数,而不是一个字符串。因此,这段代码将定义一个函数uno,然后将其传递给setTimeout并延迟3秒,然后每3秒调用一次。

您忘记将单词"function"放在uno()之前