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 :

[POO] Un peu de mal avec les membres de ma classe


Sujet :

JavaScript

  1. #1
    Membre actif

    Inscrit en
    Mars 2003
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Points : 239
    Points
    239
    Par défaut [POO] Un peu de mal avec les membres de ma classe
    Je me suis déjà un peu initié à la POO avec des langages plus évolués mais là j'ai un peu de mal avec javascript...Et avec l'heure qu'il est je ne suis plus trop apte à réfléchir

    Ma classe est un parser XML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function xmlParser()
    {
    	/* je ne sais pas trop quoi mettre dans le constructeur
        peut être this.xmlDoc = xmlDoc avec xmlDoc en paramètre mais ça ne marche pas non plus */
    }
    Puis vient ensuite la méthode loadXML et là vient le problème ce qui est un peu normale...
    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
    xmlParser.prototype.loadXml = function(file)
    {
    	/* chargement du fichier XML */
    	try {
    		// navigateur basé sur Gecko
    		if (document.implementation && document.implementation.createDocument)
    		{
    			this.xmlDoc = document.implementation.createDocument("", "doc", null);
    			this.xmlDoc.onload = function() { this.loaded = true; }
    			this.xmlDoc.load(file);
    		}
         // il y a d'autres tests pour IE et XMLHTTPRequest mais on va faire court.
    	} catch (e) {
    		alert(e);
    		return false;
    	}
     
    	return true;
    }
    Mon problème c'est qu'ainsi je me retrouve avec une erreur capté par catch
    TypeError: xmlDoc has no properties
    car en fait je n'arrive pas à définir xmlDoc afin de la trimbaler dans toutes les méthodes de la classe...

    Par contre si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var xmlDoc = document.implementation.createDocument("", "doc", null);
    xmlDoc.onload = function() { this.loaded = true; }
    xmlDoc.load(file);
    Je n'ai évidemment pas d'erreur mais ma variable n'est visible que dans la méthode loadXml...

    En clair, comment puis-je définir proprement xmlDoc (ou toute autre variable) afin de pour l'utiliser dans toutes les méthodes de la classe ??

    modéré par denisC : ajout du tag résolu

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <script>
    function MyObject(p1, p2) {
       this.p1 = p1;
       this.p2 = p2;
    }
     
    MyObject.prototype.toString = function() {
       return 'MyObject: [p1 => '+this.p1+', p2 => '+this.p2+']';
    }
     
     
    var o = new MyObject(33, 66);
    alert(o.toString());
    </script>

  3. #3
    Membre actif

    Inscrit en
    Mars 2003
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Points : 239
    Points
    239
    Par défaut
    Le problème c'est que je ne passe pas xmlDoc en paramètre vu que c'est la fonction loadXml qui me crée cette variable...

  4. #4
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    J'ai pas tout compris...
    Ceci ça va mieux ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <script>
    function MyObject(p1) {
       this.p1 = p1;
       this.p2 = null;
    }
     
    MyObject.prototype.toString = function() {
       return 'MyObject: [p1 => '+this.p1+', p2 => '+this.p2+']';
    }
     
     
    var o = new MyObject(33);
    alert(o.toString());
    </script>

  5. #5
    Membre actif

    Inscrit en
    Mars 2003
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 241
    Points : 239
    Points
    239
    Par défaut
    J'ai enfin réussi à trouver le problème j'ai redéfini les membres de ma classe puis j'ai corigés quelques erreurs dans une fonctions qui ne traitait pas xmlDoc comme il le faut et donc me renvoyais une erreur...
    Sinon je vous présente aussi (si vous ne le connaissiez pas déjà) Venkman un très bon débuggeur sous forme de plug-in pour Firefox et le navigateur Mozilla grâce auquel j'ai pu corriger mes erreurs...De plus il y a même une très bonne doc pour apprendre à l'utiliser...

    Merci encore de votre aide...

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

Discussions similaires

  1. probleme sql - j'ai du mal avec les dates
    Par zetton dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 02/06/2008, 18h23
  2. [XSLT] Du mal avec les fonctions preceding math:min etc.
    Par Mil17 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 16/08/2007, 12h27
  3. [POO] Lister les membres d'une classe
    Par Asmodean dans le forum Langage
    Réponses: 2
    Dernier message: 11/05/2007, 11h28
  4. du mal avec les fichiers ressources
    Par keil dans le forum MFC
    Réponses: 1
    Dernier message: 01/02/2006, 02h46

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