2016-02-26 51 views
0

所以我有一個是從一個onload事件調用的函數:setTimeout連續運行它的函數?

var called = 0; 

function getAll() 
{ 
    var msg = "hello everyone"; 
    alert("hi"); 
    setTimeout(startTimerRepeat, 5000, msg); 
} 

function startTimerRepeat(content) 
{ 
    document.getElementById('howmanyLbl').innerText = "Called " + called + " times, " + msg; 
} 

我預計startTimerRepeat()功能每5秒被調用,它的作用。然而,似乎getAll()函數也每5秒執行一次,因爲每5秒連續出現一次帶有「hi」的警報。

有沒有人明白我在做什麼錯在這裏?

+0

'我希望被稱爲startTimerRepeat()函數每5秒鐘你在哪裏做?誰每5秒鐘調用一次'startTimerRepeat'? – gurvinder372

+0

在title中回答你的問題:nope,'setInterval'不斷地做。 –

+0

您需要爲您的問題添加更多代碼,以便我們弄清楚。具體來說,你從哪裏調用getAll()。另外,'setTimeout()'只會在延遲後執行一次函數。 'setInterval()'是你在這裏尋找的東西。 – Matt

回答

0

但是看起來getAll()函數每5秒鐘都會執行一次,因爲每隔5秒連續出現一次「hi」。

如果您不想hi被驚動每次,但仍的innerText每5秒進行更新,然後改變你的方法

var called = 0; 
function getAll() 
{ 
    var msg = "hello everyone"; 
    alert("hi"); 
    setTimeout(function(){ 
     startTimerRepeat(msg); 
    }, 5000, msg); 
} 

function startTimerRepeat(msg) 
{ 
    document.getElementById('howmanyLbl').innerText = "Called " + (called++) + " times, " + msg; 
    setTimeout(function(){ 
     startTimerRepeat(msg); 
    }, 5000, msg); 
} 
+0

這不能回答這個問題,因爲OP沒有提供所有導致錯誤的代碼 - 即每5秒調用一次導致getAll的代碼 – Pete