IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Portée de ma variable


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 78
    Points : 50
    Points
    50
    Par défaut Portée de ma variable
    Bonjour,

    Je programme depuis peu sous JS , et je rencontre un problème. Je cherche à créer un chronomètre inversé (qui commence à 2min jusqu'à 00:00 par exemple).

    J'aimerai faire ça dans une "classe". J'utilise donc le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    (function(){
        // Constructeur
        Chrono = function(t) {
            this.time = t;
        }
        // classe Chrono
        Chrono.prototype = {
            start : function() {
                    setInterval(this.diminuerTemps, 1000);
            },
    	pause : function(){
    		//mettre en pause le chrono	
    	},
    	diminuerTemps : function(){
    		console.log("Time : ", this.time);
                    this.time-= 1000;
    		console.log("Time : ", this.time);
    	}
        }
    }());
    Et dans mon fichier main.js :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var timer = new Chrono(10000);
    timer.start();

    Pour l'instant je ne fais que des tests donc. Mais j'obtiens d'abord "undefined" et ensuite "NaN" ( ce qui est logique si this.time vaut undefined) dans la console. J'ai fait le test dans le constructeur de chrono et là j'arrive très bien à accéder à la valeur de this.time.

    Le problème est donc que je n'arrive pas à acceder à cette valeur depuis ma méthode diminuerTemps. Je ne comprends pas pourquoi , pouvez vous m'aider ?

    Merci d'avance.

  2. #2
    Membre expérimenté Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Points : 1 537
    Points
    1 537
    Par défaut
    salut,

    fait un trace de this ... tu verras qu'il est égal a window
    this n'a pas la meme valeur dans Chrono ou dans diminuerTemps

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    (function(){
        // Constructeur
        Chrono = function(t) {
            Chrono.time = t;
        }
        // classe Chrono
        Chrono.prototype = {
            start : function() {
                    setInterval(this.diminuerTemps, 1000);
            },
    	pause : function(){
    		//mettre en pause le chrono	
    	},
    	diminuerTemps : function(){
    		console.log("Time : ", Chrono.time);
                    Chrono.time-= 1000;
    		console.log("Time : ", Chrono.time);
    	}
        }
    }());
    var timer = new Chrono(10000);
    timer.start();

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    78
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 78
    Points : 50
    Points
    50
    Par défaut
    Merci , effectivement j'aurai pu penser à tester this. Ca fonctionne parfaitement merci à toi d'avoir pris le temps de m'aider.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Portée d'une variable dans une boucle FOR ?
    Par Neo41 dans le forum C++
    Réponses: 20
    Dernier message: 17/11/2006, 11h14
  2. [XSLT] pb portée d'une variable
    Par NPortmann dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 23/05/2006, 15h53
  3. Portée d'une variable globale
    Par Giill dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 27/12/2005, 10h13
  4. [MFC] Portée d'attributs/variables ?
    Par BaBeuH dans le forum MFC
    Réponses: 4
    Dernier message: 14/06/2005, 10h31
  5. [debutant][Portée] Déclaration de variable .....
    Par Slein dans le forum Langage
    Réponses: 4
    Dernier message: 07/05/2004, 10h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo