2013-02-02 4 views
0

Je suis novice en programmation orientée objet et JavaScript. J'essaie de créer un objet Timer (je suppose que c'est un objet?).Timer Class - Impossible de trouver la variable

Mon objet ne fonctionne pas, j'obtiens l'erreur suivante: "ReferenceError: Impossible de trouver la variable: countdownTime" (encore et encore).

Mon objet est supposé créer un compte à rebours. L'utilisateur a la possibilité de définir la durée du compte à rebours (en secondes) à partir de laquelle le compte à rebours décompte (propriété de mon objet). L'utilisateur peut également démarrer et arrêter mon timer (méthodes). La minuterie s'arrête automatiquement à 0 mais peut être arrêtée tôt par l'utilisateur (exemple: l'utilisateur perd toutes ses vies et il reste encore du temps - le minuteur devrait se terminer).

Pourquoi cela ne fonctionne-t-il pas comme prévu?

Fiddle: http://jsfiddle.net/bkWTS/

code:

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

Répondre

0

Vous ne pouvez pas voir votre variable parce que vous devez faire référence comme

this.countdownTime = ...

Effectuez les opérations suivantes dans votre classe:

var self = this;

Puis dans la fonction timerCall vous

self.countdownTime = ...

Cela devrait résoudre le problème du compte à rebours :)

Questions connexes