0

私のクラス構造は次のようなものです。

var jpTWUI = function(id, connection){
    this.id = id;
    this.muteButton = "#mute";
    this.hangupButton = "#hang";
    this.transferButton = "#trans";
    this.parentElement = jQuery('#timerCon');
    this.connection = connection;

    this.interval = "";

    this.createElements();
    this.addEvents(); 
};

jpTWUI.prototype = { 
    createElements: function(){ ... }, 
    addEvents: function(){...}, 
    startTimer: function(){...}
}

これで、オブジェクトを作成し、クラスを次のように呼び出しました。

var callHandler = new jpTWUI('timerCon', connection);
callHandler.startTimer();

ただし、問題は、このメソッドに継続時間を分と秒で表示する機能があることです startTimersetInterval

その間隔stopTimerを停止するようなもう1つのメソッドを実装したいのですが、ユーザーが必要なことはわかっています。しかし、同じクラスに関数を実装した場合、次のようなクラスでそのメソッドにアクセスする方法がわかりません。startTimerwindow.clearIntervalstopTimer

var callHandler = new jpTWUI('timerCon', device);
callHandler.stopTimer();

皆さんが私が達成したいことを理解してくれることを願っています。これは私がjavascriptでクラスを使用するのは初めてです。

このアプローチは正しいですか?またはどうすればそれを正しくすることができますか。

4

3 に答える 3

1

変更されたコード。setIntervalの戻り値をsetIntervalConstに保存し、clearIntervalを使用します。startTimerとstopTimerを呼び出すときは、jpTWUIの同じインスタンスを使用する必要があります。

var callHandler = new jpTWUI('timerCon', connection);
callHandler.startTimer();

///var callHandler = new jpTWUI('timerCon', device); // remove this line if you want access same instance of jpTWUI.
callHandler.stopTimer();

jpTWUI.prototype = { 
    createElements: function(){ ... }, 
    addEvents: function(){...}, 
    setIntervalConst: 0,
    startTimer: function(){ this.setIntervalConst = setInterval(....) ....},
    stoptTimer: function(){ clearInterval(this.setIntervalConst ); ....}
}
于 2012-10-04T10:12:56.127 に答える
0

作成時にIDを取得し、クリアします。

this.interval = setInterval(function(){..}, 1000)
clearInterval(this.interval );

これはあなたの問題を助けますか?

于 2012-10-04T10:12:14.443 に答える
0

setIntervalタイマーを停止するために渡すことができる識別子を返すclearIntervalので、次のようなことができます。

jpTWUI.prototype = { 
    …
    startTimer: function(){
        this.timer = setInterval(function(){
            console.log("interval")
        },2000) // every 2 seconds
    },
    stopTimer: function(){
        if(this.timer){
            clearInterval(this.timer);
        }
    }
}
于 2012-10-04T10:13:54.230 に答える