2013-02-02 43 views
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> 

回答

0

你不能看到你的變量,因爲你應該引用它像

this.countdownTime = ...

不要在你的類如下:

var self = this;

然後在timerCall功能你做

self.countdownTime = ...

這應該解決這個問題倒計時:)