无法获得javascript间隔

时间:2013-02-07 16:20:27

标签: javascript onclick

所以我对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在这里:http://jsbin.com/apoboh/1/edit

现在,它什么也没做,它给了我:未捕获的ReferenceError:未定义进度

4 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:0)

变量uno只保存您刚刚设置的超时的句柄。如果您需要通过拨打clearTimeout(),可以在以后使用它来清除超时。

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

你忘了在uno()

之前加上“function”字样