我的班级结构是这样的:
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中使用这个类..
请指导我这种做法是否正确? 或者我如何使其正确..答案 0 :(得分:1)
修改后的代码。在setIntervalConst中保存setInterval的返回值并使用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 ); ....}
}
答案 1 :(得分:0)
在创建和清除时获取ID。
this.interval = setInterval(function(){..}, 1000)
clearInterval(this.interval );
这有助于你的问题吗?
答案 2 :(得分: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);
}
}
}