0

私はこの例を持っています:

var myApp = (function() {

    var inputClick = function() {
        console.log('inputClick');
    };

    var loadRecentTimeout = function()
    {
    window.setTimeout("inputClick()",3000);
    };

    return {
      loadRecentTimeout:loadRecentTimeout,
      inputClick:inputClick
    };


})();

myApp.loadRecentTimeout(); // this returns inputClick() undefined

window.setTimeout("myApp.inputClick();",3000); // this one seems to work , but it calls that method only one time and not every 3 seconds

inputClick()このコードで3秒ごとにメソッドを呼び出す方法を誰かが説明できますか?

ありがとう

4

2 に答える 2

4

setTimeoutの代わりにsetIntervalを呼び出したい

var eventInterval = window.setInterval(function () { 
                        myApp.inputClick(); 
                    },3000);

また、関数を文字列ではなく関数として渡す必要があります。

繰り返しのイベントをキャンセルする必要がある場合は、電話することができますclearInterval

clearInterval(eventInterval)
于 2012-08-20T18:51:24.003 に答える
1

文字列「functionName()」を使用すると、ウィンドウスコープで評価されます。代わりに、名前だけを使用して関数への参照を割り当てます。setTimeoutは1回だけ発生します。これには、setIntervalを使用する必要があります。

var myApp = (function() {

    var inputClick = function() {
        console.log('inputClick');
    };

    var loadRecentTimeout = function()
    {
        window.setInterval(inputClick,3000); 
    };

    return {
      loadRecentTimeout:loadRecentTimeout,
      inputClick:inputClick
    };


})();
于 2012-08-20T18:58:07.910 に答える