定时器类 - 找不到变量

时间:2013-02-02 05:55:38

标签: javascript timer countdowntimer

我是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>

1 个答案:

答案 0 :(得分:0)

您无法看到您的变量,因为您应该像

那样引用它

this.countdownTime = ...

在课堂上执行以下操作:

var self = this;

然后在timerCall功能中执行

self.countdownTime = ...

这应该可以解决倒计时问题:)