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 :

Un getElementsByTagName hiérarchiquement


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Points : 470
    Points
    470
    Par défaut Un getElementsByTagName hiérarchiquement
    Bonjour,

    Le méthode javascript ObjRoot.getElementsByTagName('MaBalise') retourne tous les objets de type MaBalise se situant hiérarchiquement en dessous de ObjRoot.

    Donc si on a :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <PROPRIETAIRE>
        <NOM>Robert</NOM>
        <ENFANT>
            <NOM>Jules</NOM>
            <AGE>Masculin</AGE>
        </ENFANT>
        <ENFANT>
            <NOM>Jack</NOM>
            <AGE>Masculin</AGE>
        </ENFANT>
    </PROPRIETAIRE>

    proprietaire.getElementsByTagName('nom'); va retourner un tableau dont l'élément à l'indice 0 contiendra "Robert" (je fais abstraction de l'objet qui contient la propriété robert), en 1, on aura Jules et en 2 Jack. Pas de problème pour récupérer le nom de mon de "propriétaire".

    En revanche, son age n'étant pas spécifié, si je fais proprietaire.getElementsByTagName('age'), je vais avoir un tableau qui contiendra en 1er indice l'age de "Jules"...

    Donc à moins de vérifier à chaque fois que le parent de l'objet contenu en indice 1 du tableau soit bien l'objet racine, je ne sais pas si il s'agit d'une balise appartenant à "propriétaire" ou à l'un de ses "enfants".

    Existe t-il donc une méthode similaire qui ne permette de ne chercher que dans les objets enfant direct, sans récursivité ?

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Bonjour,
    Essaie ça :

    pour récupérer un seul noeud (le premier trouvé)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ObjRoot.querySelector("PROPRIETAIRE > AGE")
    pour récupérer tous les noeuds trouvés
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ObjRoot.querySelectorAll("PROPRIETAIRE > AGE")
    pour récupérer tous les enfants directs d'un noeud
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    proprietaire.childNodes
    pour récupérer tous les enfants directs d'un noeud, sans compter les noeuds de type texte et commentaires
    One Web to rule them all

  3. #3
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    504
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 504
    Points : 470
    Points
    470
    Par défaut
    Le QuerySelector n'agit pas de façon récursive ? Il me retournera NULL si j'execute proprietaire.querySelector("> AGE") ?

  4. #4
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Il prend la même syntaxe que les sélecteurs CSS. Mais je t'ai dit des bêtises en le faisant commencer par ">" pour récupérer les enfants directs, il faut forcément un élément avant. Je vais éditer mon message.

    Et oui, s'il ne trouve rien il renvoie null.
    One Web to rule them all

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    tout comme tu as écrit
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    proprietaire.getElementsByTagName('nom');
    tu peux écrire
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    enfant[n].getElementsByTagName('age');

  6. #6
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    @Auteur: je pense que tu n'as pas compris la question
    One Web to rule them all

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    Citation Envoyé par SylvainPV Voir le message
    @Auteur: je pense que tu n'as pas compris la question
    et ça te vaut un



    Je pense qu'en récupérant d'abord les balises enfant puis en les interrogeant une à une il peut récupérer le contenu des balises age

  8. #8
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Oui mais il ne veut pas l'âge des enfants, il veut l'âge du propriétaire.

    Existe t-il donc une méthode similaire qui ne permette de ne chercher que dans les objets enfant direct, sans récursivité ?
    One Web to rule them all

  9. #9
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Bah... c'est simple : si on en croit son code, l'âge du propriétaire (qui est aussi surement capitaine), c'est Masculin !

    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  10. #10
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Hypothèse : AGE = analyse génétique endocrinienne
    One Web to rule them all

Discussions similaires

  1. BindingCollection et recordset hiérarchique
    Par jacma dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 06/09/2005, 10h34
  2. [vbscript][DOM]pb avec getElementsByTagName...
    Par toyyo dans le forum APIs
    Réponses: 2
    Dernier message: 16/02/2005, 16h56
  3. Quel algorithme utilisé pour faire un arbre hiérarchique
    Par deaven dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 26/01/2005, 21h30
  4. renvoyer des données sous forme de XML hiérarchique
    Par DiGueDao dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 12/01/2005, 18h06
  5. Tri sur code hiérarchique
    Par cafou33 dans le forum SQL
    Réponses: 5
    Dernier message: 22/03/2004, 17h19

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