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 :

réciproque de getElementsById


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 44
    Points : 26
    Points
    26
    Par défaut réciproque de getElementsById
    Bonjour,

    Je viens avec une question sans doute simple mais que je ne parviens pas à traiter.

    Via getElementsByTagName je récupère une liste d'objets ayant par exemple pour balise p au sein d'un tableau T
    Je cherche ensuite à vérifier si l'un des objets de cette liste (par exemple T[0] ) possède par exemple l'id "truc".

    Et là, je bloque car une comparaison de T[0] avec l'objet résultant de document.getElementById("truc") ne fonctionne pas.
    Ex :
    if( T[0]==document.getElementById("truc") ){...}

    En d'autres, il me faudrait la réciproque de getElementsById
    Par avance, merci de vos lumières

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1

  3. #3
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut,

    Etonné par ce comportement j'ai écrit vite fait:
    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
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      <script type="text/javascript">
        function doTTT() {
            var t = document.getElementsByTagName("P");
            if( t[0]==document.getElementById("id0") ){
              alert('test ok');
            } 
     
        }
      </script>
     
      </head>
      <body onload="doTTT();">
        <p id="id0">Test 00</p>
        <p id="id1">Test 01</p>
      </body>
    </html>
    et cela fonctionne chez moi pour IE8, FF, Chrome. Et cela me semble logique car il compare des références à des noeuds. Par contre peut-être l'ordre de parcours de getElementsByTagName n'est il pas toujours celui attendu et donc l'indice ne serait pas de fait toujours t[0] ?

    ERE

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    a mon avis plusieurs id identiques sur la page ... ???

  5. #5
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Avec plusieurs fois le même id, cela semble passer quand même :
    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
    <html>
      <head>
      <script type="text/javascript">
        function doTTT() {
            var t = document.getElementsByTagName("P");
            if( t[0]==document.getElementById("id0") ){
              alert('test ok');
            }
        }
      </script>
     
      </head>
      <body onload="doTTT();">
        <p id="id0">Test 00</p>
        <p id="id0">Test 00 bis</p>
        <p id="id1">Test 01</p>
      </body>
    </html>
    ERE

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 44
    Points : 26
    Points
    26
    Par défaut
    Merci pour vos réponses utlra rapides

    Et bien, je viens de constater que le contraire ne fonctionne pas

    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
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      <script type="text/javascript">
        function doTTT() {
            var t = document.getElementsByTagName("P");
            if( t[1]=!document.getElementById("id0") ){
              alert('test ok');
            } 
     
        }
      </script>
     
      </head>
      <body onload="doTTT();">
        <p id="id0">Test 00</p>
        <p id="id1">Test 01</p>
      </body>
    </html>
    Edit : Je retire : dans mon test rapide, j'ai fait une faute de frappe : =! au lieu de !=.
    Désolé, donc cela marche.
    Conclusion : mon problème doit se situer ailleurs.. Il faut que je creuse. Merci, je reviendrai donner la cause de mon problème si je trouve.

  7. #7
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 56

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Par contre si on a une balise avec un name qui vaut l'id recherché et qu'elle est placée avant celle cherchée, là IE va mettre son grain de sable et cela ne passera plus pour lui:
    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
    <html>
      <head>
      <script type="text/javascript">
        function doTTT() {
            var t = document.getElementsByTagName("P");
            if( t[0]==document.getElementById("id0") ){
              alert('test ok');
            }
        }
      </script>
      
      </head>
      <body onload="doTTT();">
        <input type="text" name="id0" />
        <p id="id0">Test 00</p>
        <p id="id1">Test 01</p>
      </body>
    </html>
    ERE

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 44
    Points : 26
    Points
    26
    Par défaut
    Merci pour tout vraiment. Pb résolu pour moi


    Je suis vraiment trop nouille. C'est l'appel de ma fonction initiale qui était défectueux

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

Discussions similaires

  1. Programmer une fonction réciproque
    Par bichou dans le forum MATLAB
    Réponses: 4
    Dernier message: 20/06/2007, 15h34
  2. rotationel : ""fonction"" réciproque
    Par j.p.mignot dans le forum Mathématiques
    Réponses: 13
    Dernier message: 14/11/2006, 22h53
  3. structures qui s'appellent réciproquement
    Par salseropom dans le forum C
    Réponses: 12
    Dernier message: 27/03/2006, 17h40
  4. [Forms 6i] Relation Maitre Detail réciproque ?
    Par lafouine dans le forum Oracle
    Réponses: 3
    Dernier message: 23/01/2006, 10h24
  5. Conversion de type réciproque.
    Par Moucoulin dans le forum C++
    Réponses: 16
    Dernier message: 24/06/2005, 16h34

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