2015-10-06 18 views
0

我需要每100ms調用一個函數,這很容易,但是如果我需要該函數來接受參數呢?使用setInterval()函數在JavaScript中的參數

問題是我創建了一個對象,並且需要定期更新它。我曾嘗試將對象引用設置爲全局,但沒有奏效。我試着將它設置爲一個函數變量,但仍然沒有運氣。顯然我需要傳入對象,我不知道如何使用setInterval。這必須有一個竅門?下面

代碼工作的抗凍電話,但之後它的失敗:

setCounterText.segment.DisplayText("AAABBB"); 

而且抱怨說,setCounterText.segment.DisplayText()不是一個函數...

謝謝.. 。

window.onload = function() 
{ 

     setInterval(setCounterText, 1000); 
} 




function setCounterText() 
{ 

    //"use strict"; 

    var num; 

    if(!setCounterText.isInit) 
    { 
    num = 0; 
    setCounterText.isInit=true; 

    var canvas = document.getElementById('c'); 
    var container = document.getElementById('container'); 
    canvas.width = container.clientWidth; 
    canvas.height = container.clientHeight; 

    // Create a new sixteen segment display 
    setCounterText.segment = new SixteenSegment(1, canvas); 

    update(setCounterText.segment); 

    setCounterText.segment.DispayText("T-000:00:00.0"); 
    } 

    num++; 

    setCounterText.segment.DisplayText("AAABBB"); 

} 
+0

我認爲你的時機已關閉。目前它每1秒調用一次。 '1000!= 100ms' ... – War10ck

+0

是的,它更容易觀看調試器每秒比每秒。我會解決這個問題,如果我可以得到它的工作。 –

+0

你的問題還不清楚,你是否想用setInterval函數發送一個參數給你的'setCounterText'函數? –

回答

1

您可以創建另一個函數來充當setCounterText功能的Clojure和傳遞,作爲一個PARAM去setInterval。

setInterval(function() { 
 
    setCounterText(anotherParameter); 
 
}, 1000);

每當間隔觸發,將捕獲你的參數並調用setCounterText功能。

關於你所得到的錯誤,這是不可能不知道的SixteenSegment函數的代碼說,但它應該有一個屬性設置上叫DisplayText

+0

這是一個很酷的想法,謝謝,我會嘗試。至於調用DisplayText(),這是我在isInit條件內調用的相同方法。很顯然,段的價值並沒有在這個函數的調用中持續存在。 –

+0

也許更新函數中的某些東西導致它正常? – toskv

+0

我只是檢查,我可以成功地從更新函數內調用DisplayText(),我看不出任何原因。我需要得到這個,所以我只是從setCounterText()調用update(),這似乎工作。現在我只需要編寫設置定時器的正確值的代碼,我就會很好。不是我計劃的,但如果它有效,我可以繼續前進。謝謝! –

相關問題