2015-10-06 44 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(),这似乎工作。现在我只需要编写设置定时器的正确值的代码,我就会很好。不是我计划的,但如果它有效,我可以继续前进。谢谢! –

相关问题