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 :

Classe javascript, variable indéfinie.


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Classe javascript, variable indéfinie.
    Bonjour à tous,
    Je vous expose mon problème ( qui me rend dingue depuis quelques temps déjà ). J'ai créé une classe Js , pour la gestion des cartes google maps GMapAnnu ( et c'est la première fois que je créé une classe en JS).
    Ma classe à une fonction createMap qui créé la carte à partir de paramétres se trouvant dans un fichier XML. j'utilise une fonction loadAnnuaire pour "remplir" la variable activites qui est supposé être globale , après j'appel cette variable avec ma fonction afficheEntite mais la variable est "undefined" .

    Voilà mon code mais si vous êtes une âme charitable et que vous voulez m'aider, interessez vous surtout à la variable activites qui est :
    • déclarée au début comme variable globale et privée de la fonction GMapAnnu
    • remplie à l'interieure de la fonction privée loadAnnuaire qui elle est appellé à partir de la fonction publique this.createMap
    • enfin appelé à partir de la fonction publique this.afficheEntite et c'est là ou j'ai l'erreure undefined

      Voile le code et merci à l'avance :
      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
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      67
      68
      69
      70
      71
      72
      73
      74
      75
      76
      77
      78
      79
      80
      81
      82
      83
      84
      85
      86
      87
      88
      89
      90
      91
      92
      93
      94
      95
      96
      97
      98
      99
      100
      101
      102
      103
      104
      105
      106
      107
      108
      109
      110
      111
      112
      113
      114
      115
      116
      117
      118
      119
      120
      121
      122
      123
      124
      125
      126
      127
      128
      129
      130
      131
      132
      133
      134
      135
      136
      137
      138
      139
      140
      141
      142
      143
      144
      145
      146
      147
      148
      149
      150
      151
      152
      153
      154
      155
      156
      157
      158
      159
      160
      161
      162
      163
      164
      165
      166
      167
      168
      169
      170
      171
      172
      173
      174
      175
      176
      177
      178
      179
       
      function GMapAnnu() {
          var mapLocation;
          var map;
          var activites = new Array();
          var myIcons = new Array();
          var custIcon = new GIcon(G_DEFAULT_ICON);
          custIcon.iconSize = new GSize(16, 25);
          custIcon.shadowSize = new GSize(0, 0);
          custIcon.iconAnchor = new GPoint(0, 0);
       
          this.createMap = function(mLocation) {
       
              mapLocation = mLocation;
              map = new GMap2(document.getElementById(mapLocation));
       
              GDownloadUrl("viewer/data.xml",
              function(data) {
       
                  var xml = GXml.parse(data);
       
                  var annuaire_xml = xml.documentElement.getElementsByTagName("annuaire");
       
                  loadAnnuaire(annuaire_xml[0]);
       
                  // Recuperer les entites : 
                  var entites_xml = xml.documentElement.getElementsByTagName("entites");
                  // Charger les entites à partir de l'xml dans un tableau associatif. 
                  loadEntites(entites_xml[0]);
       
                  //alert("Lat : "+ marker.getLatLng().x.toString() + " Lng : "+ marker.getLatLng().y.toString());
              });
       
          }
       
          function loadAnnuaire(annuaire) {
       
              // Positionner la carte.  //latNe_annu="36.842950" lngNe_annu="10.251403" latSw="36.829321" lngSw="10.225353"
              // Creer le point NordEst. 
              var ne = new GLatLng(parseFloat(annuaire.getAttribute("latNe_annu")), parseFloat(annuaire.getAttribute("lngNe_annu")));
              // Creer le point SudWest
              var sw = new GLatLng(parseFloat(annuaire.getAttribute("latSw_annu")), parseFloat(annuaire.getAttribute("lngSw_annu")));
       
              // Creer le bound de la carte , un bound est un carrée crée grace aux points extreme nordEst et sudWest .
              var bounds = new GLatLngBounds(sw, ne);
              // Centrer et zoomer sur la position suivant 
              map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
       
              /*****    Charger les controles et le type de la carte   ******/
              // Le type de la carte 
              switch (annuaire.getAttribute("maptype_annu")) {
              case "G_NORMAL_MAP":
                  map.setMapType(G_NORMAL_MAP);
                  break;
              case "G_SATELLITE_MAP":
                  map.setMapType(G_SATELLITE_MAP);
                  break;
              case "G_HYBRID_MAP":
                  map.setMapType(G_HYBRID_MAP);
                  break;
              case "G_PHYSICAL_MAP":
                  map.setMapType(G_PHYSICIAL_MAP);
                  break;
              }
       
              // le Control de la carte Zoom/Size
              switch (annuaire.getAttribute("mapcontrol_annu")) {
              case "GSmallMapControl":
                  map.addControl(new GSmallMapControl());
                  break;
              case "GLargeMapControl":
                  map.addControl(new GLargeMapControl());
                  break;
              case "GSmallZoomControl":
                  map.addControl(new GSmallZoomControl());
                  break;
              case "GLargeMapControl3D":
                  map.addControl(new GLargeMapControl3D());
                  break;
              }
       
              // le control du type de la carte. 
              switch (annuaire.getAttribute("maptypecontrol_annu")) {
              case "GMapTypeControl":
                  map.addControl(new GMapTypeControl());
                  break;
              case "GMapTypeControl(True)":
                  map.addControl(new GMapTypeControl(true));
                  break;
              case "GMenuMapTypeControl":
                  map.addControl(new GMenuMapTypeControl());
                  break;
              }
       
              // le control de l'echelle de la carte mapscalecontrol. 
              if (annuaire.getAttribute("mapscalecontrol_annu") == "GScaleControl") map.addControl(new GScaleControl());
       
              // le control de l'apercçu , mapoverview
              if (annuaire.getAttribute("mapoverviewcontrol_annu") == "GOverviewMapControl") map.addControl(new GOverviewMapControl());
       
          }
       
          function loadEntites(entites_xml) {
       
              // Recuperer dans un tableau la liste des activites. 
              var activites_xml = entites_xml.getElementsByTagName("activite");
       
              for (var i = 0; i < activites_xml.length; i++) {
                  // Ajouter un enregistrement a activites ayant pour id , l'id de l'activite. 
                  var id_activ = activites_xml[i].getAttribute("id_activ").toString();
                  activites[id_activ] = new Array();
       
                  // Ajouter les autres propriété de l'activite a l'enregistrement ayant pour clé l'id de l'activite. 
                  activites[id_activ]["nom_activ"] = activites_xml[i].getAttribute("nom_activ").toString();
                  activites[id_activ]["desc_activ"] = activites_xml[i].getAttribute("desc_activ").toString();
       
                  // Inserer les categories d'une activites. 
                  activites[id_activ]["categories"] = new Array();
                  // recuperer la liste des categories dans une variable categories_xml puis parcourir ce tableau. . 
                  var categories_xml = activites_xml[i].getElementsByTagName("categorie");
       
                  for (var j = 0; j < categories_xml.length; j++) {
                      var id_cat = categories_xml[j].getAttribute("id_cat").toString();
                      activites[id_activ].categories[id_cat] = new Array();
       
                      activites[id_activ].categories[id_cat]["nom_cat"] = categories_xml[j].getAttribute("nom_cat").toString();
                      activites[id_activ].categories[id_cat]["desc_cat"] = categories_xml[j].getAttribute("desc_cat").toString();
                      activites[id_activ].categories[id_cat]["icone_cat"] = categories_xml[j].getAttribute("icone_cat").toString();
       
                      // Ajouter une icone de cette categorie au tableau d'icones. 
                      myIcons[id_cat] = new GIcon(custIcon, "img/gicons/" + activites[id_activ].categories[id_cat]["icone_cat"]);
                      //
                      activites[id_activ].categories[id_cat].entites = new Array();
       
                      var entites_xml = categories_xml[j].getElementsByTagName("entite");
       
                      for (var k = 0; k < entites_xml.length; k++) {
                          var id_ent = entites_xml[k].getAttribute("id_ent").toString();
                          var nom_ent = entites_xml[k].getAttribute("nom_ent").toString();
                          var desc_ent = entites_xml[k].getAttribute("desc_ent").toString();
                          var lng_ent = parseFloat(entites_xml[k].getAttribute("lng_ent"));
                          var lat_ent = parseFloat(entites_xml[k].getAttribute("lat_ent"));
                          var adr_ent = entites_xml[k].getAttribute("adr_ent").toString();
                          var tel_ent = entites_xml[k].getAttribute("tel_ent").toString();
                          var web_ent = entites_xml[k].getAttribute("web_ent").toString();
                          var rue_ent = entites_xml[k].getAttribute("rue_ent").toString();
       
                          var marker = new GMarker(new GLatLng(lat_ent, lng_ent), {
                              icon: myIcons[id_cat]
                          });
                          alert(nom_ent + " " + lat_ent.toString() + " " + lng_ent.toString());
       
                          // Ajouter les informations au marqueur. 
                          marker.nom_ent = nom_ent;
                          marker.desc_ent = desc_ent;
                          marker.adr_ent = adr_ent;
                          marker.tel_ent = tel_ent;
                          marker.web_ent = web_ent;
                          marker.rue_ent = rue_ent;
       
                          activites[id_activ].categories[id_cat].entites[id_ent] = marker;
                      }
       
                  }
       
              }
       
          }
       
          this.afficheEntite = function(id_ent) {
       
              marker = activites[1].categories[2].entites[id_ent];
              map.addOverlay(marker);
       
              alert(activites[1].categories[2].entites[id_ent].nom_ent);
       
          }
       
      }

  2. #2
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Salut,

    Malheureusement, je ne peux répondre directement à ta question étant donné qu'il y a trop d'éléments extérieurs. Comment exécutes-tu ton code? Quelles méthodes appelles-tu?
    Ceci est une représentation simplifiée de ton code :
    Code xhtml : 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
       <title></title>
       <meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
       <style type="text/css">
       </style>
    </head>
    <body>
      <script type="text/javascript">
      function o1() {
          var v1 = ["init"];
          this.f1 = function() {
            f2("f2");
          }
          function f2(a) {
            v1[1] = [];
            v1[1]["categories"] = [];
            v1[1].categories = a;
          }
          this.f3 = function(i) {
            return v1[i];
          }
      }
     
      var t1 = new o1();
      t1.f1();
      alert(t1.f3(0) +' - '+ t1.f3(1).categories);
      </script>
    </body>
    </html>
    et fonctionne correctement.

    Mon conseil, serait de repartir de zéro, avec des éléments simples (pas de xml, ni d'api) pour comprendre où ça coince.

  3. #3
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par franculo_caoulene Voir le message
    Salut,

    Malheureusement, je ne peux répondre directement à ta question étant donné qu'il y a trop d'éléments extérieurs. Comment exécutes-tu ton code? Quelles méthodes appelles-tu?
    Ceci est une représentation simplifiée de ton code :
    Code xhtml : 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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
       <title></title>
       <meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
       <style type="text/css">
       </style>
    </head>
    <body>
      <script type="text/javascript">
      function o1() {
          var v1 = ["init"];
          this.f1 = function() {
            f2("f2");
          }
          function f2(a) {
            v1[1] = [];
            v1[1]["categories"] = [];
            v1[1].categories = a;
          }
          this.f3 = function(i) {
            return v1[i];
          }
      }
     
      var t1 = new o1();
      t1.f1();
      alert(t1.f3(0) +' - '+ t1.f3(1).categories);
      </script>
    </body>
    </html>
    et fonctionne correctement.

    Mon conseil, serait de repartir de zéro, avec des éléments simples (pas de xml, ni d'api) pour comprendre où ça coince.
    Salut ,
    Merci pour votre réponse , mais j'ai compris ou ça coince exactement et j'ai posté un autre message précisant exactement mon problème si vous pouvez m'aider ça serais génial.
    Lien vers l'autre post.

  4. #4
    Membre émérite Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Points : 2 953
    Points
    2 953
    Par défaut
    Ah ben supprime ou continue ton premier message la prochaine fois. Je reviens je réponds à un message inutile, la poisse...

  5. #5
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par franculo_caoulene Voir le message
    Ah ben supprime ou continue ton premier message la prochaine fois. Je reviens je réponds à un message inutile, la poisse...
    Non non c'était pas inutile , c'est justement votre réponse qui m'a permise de trouver ou se trouvait le problème exactement donc merci et la prochaine fois je supprimerais promis.

Discussions similaires

  1. [PHP 5.3] Variable indéfinie, class
    Par bob633 dans le forum Langage
    Réponses: 17
    Dernier message: 15/02/2012, 18h36
  2. [Sessions] Classes et variables de sessions
    Par Thanaroth dans le forum Langage
    Réponses: 4
    Dernier message: 06/10/2005, 16h17
  3. [Javascript] variable pour accéder à element d'un formulaire
    Par aurelienalix dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 25/08/2005, 10h50
  4. [javascript] valeur indéfinie
    Par MatMeuh dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 19/10/2004, 14h55
  5. Réponses: 6
    Dernier message: 06/10/2004, 12h59

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