我正在尝试在Javascript中创建一个计时器,我对如何实现它有一个特定的问题。
现在就像这样
function CountUpTimer(seconds,name,targetId,submitButtonId){
this.time = seconds;
this.currentTime = 0;
this.minutes = Math.floor(seconds/60);
this.submitButtonId = submitButtonId;
this.seconds = seconds - this.minutes*60;
this.currentSeconds = 0;
this.currentMinutes = 0;
this.targetId = targetId;
this.name = name;
this.isPaused = false;
this.init = function(){
setInterval(this.name + ".tick()",1000);
}
this.pause = function(){
this.isPaused = true;
}
this.unpause = function(){
this.isPaused = false;
}
this.tick = function(){
if(this.isPaused == false){
if(this.currentTime <= this.time){
if(this.currentSeconds == 59){
this.currentSeconds = 0;
this.currentMinutes++;
}
this.updateTimer();
this.currentTime++;
this.currentSeconds++;
} else{
this.endTiming();
}
}
}
现在,问题在于我无法动态创建CountUpTimer对象,因为我需要知道我分配给该对象的变量的名称。有什么方法可以解决这个问题 - 所以让我们说像
setInterval(this.tick(),1000);
答案 0 :(得分:2)
答案 1 :(得分:1)
this.init = function(){
var self = this;
setInterval(self.tick(),1000);
}
保持对原始对象的引用,因为在setInterval中使用它将在错误的对象上下文(文档)中。
答案 2 :(得分:0)
你可以这样做:
var self = this;
setInterval(function() {
self.tick()
}, 1000);
如果您对非传统支持感到满意,请使用Function.bind
。