无法使javascript间隔正常工作

无法使javascript间隔正常工作,javascript,onclick,Javascript,Onclick,所以我对javascript有点陌生,但我试图通过点击一个按钮来创建一个带有其他一些功能的进度条。我尝试在javascript中使用设置的时间间隔来计时条,这是我迄今为止的js: //Javascript Document function progress(){ Var uno = setTimeout("uno()", 3000); uno(){ document.getElementById("title").innerHTML = "Connecting..."; d

所以我对javascript有点陌生,但我试图通过点击一个按钮来创建一个带有其他一些功能的进度条。我尝试在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在这里:


现在,它什么也不做,它给了我:uncaughtreferenceerror:progress未定义

变量
uno
只是保存您刚才设置的超时的句柄。如果需要,可以稍后通过调用来清除超时,然后再执行超时

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

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秒调用一次。

首先,您使用的是
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()前面加上单词“function”(

Var
需要小写,而uno需要在前面加上
function
标识符。此外,分配给第一个uno的超时将被执行该操作的函数声明所覆盖,+1也用于解释,而不仅仅是按我的方式抛出代码:)np——我将它清理了一点