0

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

1 回答 1

0

你看不到你的变量,因为你应该像这样引用它

this.countdownTime = ...

在课堂上执行以下操作:

var self = this;

然后在timerCall你做的功能

self.countdownTime = ...

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

于 2013-09-29T23:17:17.773 回答