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
    Membre du Club
    Inscrit en
    Ao�t 2008
    Messages
    7
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2008
    Messages : 7
    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 Expert 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
    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
    Membre du Club
    Inscrit en
    Ao�t 2008
    Messages
    7
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2008
    Messages : 7
    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 Expert 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
    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
    Membre du Club
    Inscrit en
    Ao�t 2008
    Messages
    7
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2008
    Messages : 7
    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