-1

所以我对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

现在,它什么也不做,它给了我:Uncaught ReferenceError: progress is not defined

4

4 回答 4

3

首先,您使用的是setTimeoutnot 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
}
于 2013-02-07T16:22:40.330 回答
0

该变量uno只是保存您刚刚设置的超时的句柄。如果您需要通过调用clearTimeout().

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

于 2013-02-07T16:22:24.383 回答
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 秒调用一次。

于 2013-02-07T16:22:37.660 回答
0

你忘了在 uno() 之前加上“函数”这个词

于 2013-02-07T16:24:30.420 回答