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();

但问题是该方法startTimer具有setInterval以分钟和秒显示持续时间的功能。

我想实现另一种方法stopTimer,比如停止那个startTimer间隔,我知道我必须用户window.clearInterval。但是当我在同一个类中实现该函数stopTimer时,我不知道如何使用该类访问该方法,例如:

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

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 回答
0

创建时获取 id 并清除它。

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

这对你的概率有帮助吗?

于 2012-10-04T10:12:14.443 回答