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] Syntaxe getElementById et select


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 80
    Points : 35
    Points
    35
    Par défaut [POO] Syntaxe getElementById et select
    Bonjour le forum,

    code :
    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
    function maFonctionJS()  
    {  
        var selectedValue = document.getElementById('monCombo')[document.getElementById('monCombo').selectedIndex].id ;  
     
        if (selectedValue=="option1")  
        {  
    alert('option1');
     
           var Classe_coordonnees_MB2 = Class.create();
            Classe_coordonnees_MB2 .prototype = {
          initialize : function(longi, lat, comment){
          this.longi = longi;
          this.lat = lat;
          this.commentaire = comment;
          }
          }
      alert('avt boucle');
         var point_MB2=new Array();
        point_MB2[0]=new Classe_coordonnees_MB2(32.255488,3.2186515,"T1");
        point_MB2[1]=new Classe_coordonnees_MB2(32.255488,3.2186515,"T2");  
     
             for(var k=0; k<point_MB2.length; k++) ;
             {
    alert('ds boucle for');
             var longi =point_MB2[k].longi;
             var lat = point_MB2[k].lat;
             var commentaire = point_MB2[k].comment;
             place(longi,lat,commentaire);
             }        
     
       }
    Mon composant combobox fonctionne parfaitement. Lorsque je sélectionne l'option1 j'ai bien la fenêtre option1 qui s'affiche. Par contre la fenêtre d'alert('avt boucle'); na s'aafiche pas. Ni lla fenêtre alert('ds boucle for'); ne s'affichent pas. JE pense que cela est donc à un probléme d'écriture de la classe mais je ne sais où..........

    Merci

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 651
    Points : 11 145
    Points
    11 145
    Par défaut
    bonjour,


    cette ligne de code est curieuse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var selectedValue = document.getElementById('monCombo')[document.getElementById('monCombo').selectedIndex].id ;
    ce n'est pas plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var selectedValue = document.getElementById('monCombo').options[document.getElementById('monCombo').selectedIndex].value ;
    ou encore :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var liste =  document.getElementById('monCombo');
    var selectedValue = liste.options[liste.selectedIndex].value;

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 80
    Points : 35
    Points
    35
    Par défaut
    Bonjour,

    1°)Ton code :
    var selectedValue = document.getElementById('monCombo').options[document.getElementById('monCombo').selectedIndex].value ;
    fonctionne aussi sauf qu'il faut que j'ajoute, au niveau de if (selectedValue==METTRE LE VALUE) et nn plus l'id.

    2°)
    Par contre, je pense vraiment que le problème vient ma classe.Je me permets d'avancer cela car en placant des "alert('...')", sur presque toutes les lignes, je remarque que juste aprés la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     var Classe_coordonnees_MB2 = Class.create();
    les autres "alerte(....)" ne s'affichent pas.

    (En faite j'ai trouvé un tuto sur les classes javascript sur internet mais comme ce sont mes premiers pas ds la création de classe j'ai dû surement me trompé qqpart ...)

    Voici ce que dit le tuto :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    var maClasse = Class.create();
     
    maClasse.prototype = {
    	initialize : function() {
    		this.attribut1;
    		this.attribut2;
    	}
    	methodeA : function() {
    		//code
    	}
    	methodeB : function) {
    		//code
    	}		
    }
    POur moi est ce que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    methodeA : function() {
    		//code
    	}
    	methodeB : function) {
    		//code
    me serait utile ? est ce à cause de cela que le prog ne fonctionne pas ?

    Merci.

  4. #4
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 651
    Points : 11 145
    Points
    11 145
    Par défaut
    Citation Envoyé par JeanDan Voir le message
    1°)Ton code :
    var selectedValue = document.getElementById('monCombo').options[document.getElementById('monCombo').selectedIndex].value ;
    fonctionne aussi sauf qu'il faut que j'ajoute, au niveau de if (selectedValue==METTRE LE VALUE) et nn plus l'id.
    document.getElementById('monCombo') ne retourne pas un tableau d'éléments mais un objet !!! Donc ta syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var selectedValue = document.getElementById('monCombo')[document.getElementById('monCombo').selectedIndex]
    est fausse que tu appelles l'attribut id ou value ensuite.


    Et Class.create(); c'est quoi ??

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 80
    Points : 35
    Points
    35
    Par défaut
    Yop, salut

    Merci pr ta réponse!
    Voici le lien où j'ai chopé le tuto "création de classe javascript" : http://geotribu.net/node/2

    En faite je voudrai créer un objet dont les propriétés sont "longi" "lat" et "coment" (il faut dc passer par une classe ???). Ce procédé (de créer un objet) m'éviterai de créer des inbrication de tableaux multiples.

    Si tu vois un autre code pour créer un objet .. pourrais tu me le donner ?? merci
    le prog. ne s'éxécute plus à partir de Class.create();

    a+

  6. #6
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 651
    Points : 11 145
    Points
    11 145
    Par défaut
    voici un exemple :
    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
     
    // constructeur
    var tonObjet = function(longitude, latitude, commentaire)
    {
      this.longitude = longitude;
      this.latitude = latitude;
      this.commentaire = commentaire;
     
      // this désigne l'objet lui-même
      // this.longitude => proriété longitude de l'objet
      // longitude passée en paramètre => valeur donnée à l'objet lors de sa création
      // this.longitude et le paramètre longitude ne désigne pas la même variable !!
     
    }
     
    // défintion des méthodes de l'objet
    tonObjet.prototype=
    {
      retourneLatitude : function()
      {
        return this.latitude;
      }
      ,
      retourneLongitude : function()
      {
        return this.longitude;
      }
      ,
      retourneCommentaire : function()
      {
        return this.commentaire;
      }
      ,
      changeLongitude : function(longitude)
      {
        this.longitude = longitude;
      }
      ,
      changeLatitude : function(latitude)
      {
        this.latitude = latitude;
      }
      ,
      changeCommentaire : function(commentaire)
      {
        this.commentaire = commentaire;
      }  
    }
     
     
    //*********************
    function initObjet()
    {
      // initialisation avec des valeurs par défaut
      var objet = new tonObjet("45°","00","ton commentaire");
     
      // retourne la valeur de la longitude
      alert("Longitude : " + objet.retourneLongitude());
     
      // on change la longitude de l'objet
      objet.changeLongitude("30°");
      // retourne la valeur de la longitude
      alert("Longitude : " + objet.retourneLongitude());
     
    }

    Quant à Class.create() je vois ce que c'est. C'est une fonction de la bibliothèque Prototype (rien à voir avec le mot clef javascript prototype). Pour utiliser Class.create() tu dois donc appeler cette bibliothèque. Voir le paragraphe :
    Créer sa propre classe avec la bibliothèque Prototype

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 80
    Points : 35
    Points
    35
    Par défaut
    Bonjour,
    Je tiens à te remercier pour m'avoir éclaici sur les classes!

    Je crée donc ma fct :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // constructeur
    var Classe_coordonnees_c1 = function(longitude, latitude, commentaire)
    {
      this.longitude = longitude;
      this.latitude = latitude;
      this.commentaire = commentaire;
    }
    J'ai plusieurs points à créer (environ 18). je crée dc un tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var point_c1=new Array();
    point_c1[0]=new Classe_coordonnees_c1(32.255488,3.2186515,"1e");
    point_c1[1]=new Classe_coordonnees_c1(32.255488,3.2186515,"2o"); 
    ---
    je fais un test :
    alert(point_c1[0].longitude);
    alert(point_c1[0].commentaire);
    Les alert affichent bien le bon résultat .. ouééé

    j'utilise une boucle for
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    //boucle for
     for(var k=0; k<point_MB2.length; k++) ;
             {
    alert(k);
             var longi =point_c1[k].longitude;
             var lat = point_c1[k].latitude;
             var comment = point_c1[k].commentaire;
             place(longi,lat,comment);
             }
    MAIS voilà ... l'alert : alert(k); de la boucle for affiche k=2 dés le premier tour ....
    POurtant la 1° ligne de code est correct ....
    Merci bien

  8. #8
    Membre expérimenté Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Points : 1 388
    Points
    1 388
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    //boucle for
     for(var k=0; k<point_MB2.length; k++) ;
             {
    alert(k);
             var longi =point_c1[k].longitude;
             var lat = point_c1[k].latitude;
             var comment = point_c1[k].commentaire;
             place(longi,lat,comment);
             }

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 80
    Points : 35
    Points
    35
    Par défaut
    Cool merci l'équipe javascript!
    a+

  10. #10
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 651
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 651
    Points : 11 145
    Points
    11 145
    Par défaut
    Et déclare les variables au début de la fonction (je fais une allergie aux variables déclarées au milieu d'une fonction ou dans une boucle )

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

Discussions similaires

  1. Syntaxe IF EXISTS (SELECT.
    Par Greldinard dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 11/10/2006, 12h55
  2. [PHP-JS] syntaxe fonction verification select
    Par calitom dans le forum Langage
    Réponses: 1
    Dernier message: 12/09/2006, 14h53
  3. SQL : syntaxe insert into select
    Par chrislauxerrois dans le forum Access
    Réponses: 15
    Dernier message: 31/07/2006, 16h12
  4. Pb de syntaxe sql : Sélection SELECT FROM WHERE vide
    Par oceanediana dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 31/07/2006, 15h54
  5. pb de syntaxe avec le "select"
    Par dipajero dans le forum Bibliothèques tierces
    Réponses: 5
    Dernier message: 04/01/2006, 15h40

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