我是JavaScript和面向对象编程的新手。我正在尝试创建一个Timer对象(我假设这是一个对象?)。
我的对象无效,我收到以下错误:“ReferenceError:找不到变量:countdownTime”(一遍又一遍)。
我的对象应该创建一个倒数计时器。用户可以设置计时器倒计时的倒计时时间(以秒为单位)(我的对象的属性)。用户还可以启动和停止我的计时器(方法)。计时器自动停在0,但可以由用户提前停止(例如:用户失去所有生命并且仍有剩余时间 - 计时器应该结束)。
为什么这不按预期工作?
小提琴:http://jsfiddle.net/bkWTS/
代码:
<div id="output"></div>
<script>
// Timer object
var Timer = function() {
// PROPERTIES
this.countdownTime = 120; // amount of time the timer counts down from in seconds
// METHODS
// Start timer - starts the countdown timer
this.Start = function() {
var timer = setInterval(timerCall, 1000);
};
// End timer
// timer automatically ends when countdown time reaches 0 BUT can be ended early
// Example: User looses all lives and there is still time remaining - timer should end
this.End = function() {
// Stop timer
clearInterval(timer);
};
function timerCall() {
if (countdownTime > 0) {
// Display time in output div
document.getElementById("output").innerHTML = countdownTime;
countdownTime--;
} else {
// Stop timer
clearInterval(timer);
}
}
};
// Create new timer object
var myTimer = new Timer();
// Countdown from 30
myTimer.countdownTime = 30;
// Start the countdown
myTimer.Start();
</script>
答案 0 :(得分:0)
您无法看到您的变量,因为您应该像
那样引用它 this.countdownTime = ...
在课堂上执行以下操作:
var self = this;
然后在timerCall
功能中执行
self.countdownTime = ...
这应该可以解决倒计时问题:)