2013-02-07 24 views
-1

所以即時通訊有點新的JavaScript,但即時通訊嘗試做一個進度條,與其他一些功能,點擊一個按鈕。 IM特林在JavaScript中使用設定的時間間隔,以時間了吧,這是我的js至今:無法獲得JavaScript間隔工作

//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是在這裏:​​

現在,它什麼都不做,它給了我:未捕獲的ReferenceError:進步是沒有定義

+0

'Var'需要小寫,uno需要前面的'function'標識符。此外,分配給第一個uno的超時將被您的函數聲明覆蓋 – danronmoon

回答

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 
} 
+0

這樣做,給出一個解釋太不只是拋出代碼我的方式+1) – Nick

+0

np - 我清理了一下更多 – hvgotcodes

0

變量uno只需握住手柄到剛纔設置的超時。如果您需要通過調用clearTimeout(),您可以稍後使用它來清除超時之前的超時。

如果您不需要清除超時,那麼根本沒有理由存儲句柄。

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

0

你忘了詞在uno之前的「函數」()