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 :

[DOM] Child de meme génération


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 30
    Points : 24
    Points
    24
    Par défaut [DOM] Child de meme génération
    Bonjour,

    Je coince sur une petit problème et ni google, ni une recherche ici ne m'ont apporter de solutions.

    Je cherche a récupéré tout les enfants d'un parent donné mais uniquement les enfants d'une même génération

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <ul id="first">
      <li id="li1.1"></li>
      <li id="li1.2"></li>
      <li id="li1.3"></li>
      <ul id="sub">
         <li id="li4"></li>
         <li id="li5"></li>
         <li id="li6"></li>
      </ul>
    </ul>
    Je voudrai récupérer seulement les li1.1, li1.2, li1.3 mais je trouve pas de maniere de faire.

    avec root = document.getElementById(first);
    root.getElementByTagName, et root.childNodes recupere plus que ce que je recherche.

    Au passage, je ne peux pas me baser sur les ID des enfants car ils sont variables. je recherche donc uniquement une solution a base de DOM ^^"
    Auriez vous une idée

    Merci

  2. #2
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    root = document.getElementById('first').firstChild;
    var tableau = new Array;
    do{
    if(root.nodeName=='LI'){tableau.push(root)}
    root=root.nextSibling;
    }
    while(root.nextSibling)
    Devrait le faire je pense.
    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

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 30
    Points : 24
    Points
    24
    Par défaut
    Merci, ca ressemble beaucoup a ce que je chercher a faire
    Me reste plus qu'a trouver la bonne maniere pour recuperer le contenu ^^

    Merci beaucoup

  4. #4
    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
    La variable tableau contient les éléments sélectionnés, si tu préfères récupérer leur id à la place, tu peux faire :
    Ensuite, en fonction de ce que tu veux en faire, tu peux boucler sur les valeurs du tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(var j in tableau){
        //traitement des données
    }
    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

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 30
    Points : 24
    Points
    24
    Par défaut
    merci pour le coup de pouce mais en bon newbie, j'y arrive pas ^^

    en fait je récupérer bien tout les LI qu'il me faut mais impossible de récupérer le contenu d'un LI

    <li><a href="index.html">Hello World</a></li>

    root.childNodes[0] est pourtant bien un Object text mais root.childNodes[0].nodeValue ne me retourne que du vide

    deuxieme imcompréhension :
    root.childNodes[1] me retourne "index.html"... ca devrai pas me retourner un noeud de type Element ( la balise <A> en l'occurence) ?

    Merci d'un newbie

    Edit:

    Apres 2sec de reflexion je me suis rendu compte que mon hello world n'appartenait pas au noeud sur lequel j'etait mais a son fils...
    un root.childNodes[1].firstChild.nodeValue est venu au bout de mes probleme ^^

    Merci encore

  6. #6
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    aurais tu ton code complet ? ^^
    mais au vu de ce que tu nous montre tu n'es pas positionné sur le bon nœud
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  7. #7
    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
    Apres 2sec de reflexion je me suis rendu compte que mon hello world n'appartenait pas au noeud sur lequel j'etait mais a son fils...
    un root.childNodes[1].firstChild.nodeValue est venu au bout de mes probleme ^^
    Attention, IE et FF n'interprètent pas le DOM de la même manière au niveau des sauts de ligne...

    EDIT :
    Ceci dit, je ne comprends toujours pas ce que tu souhaites récupérer... si c'est Hello world', tu peux passer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tableau[i].getElementsByTagName('a')[0].innerHTML
    avec tableau correspondant au code que je t'ai donné plus haut et en considérant que getElementsByTagName est une méthode du DOM plus cross browser que childNodes...
    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

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 30
    Points : 24
    Points
    24
    Par défaut
    Pour le positionnement sur le bon noeud c'est résolu ( cf mon edit ^^) , j'était effectivement sur le parent du noeud dont je rechercher le contenu

    Pour le 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
     
    function initMenu() {
     
    	/* DECLARATION */
    	root = document.getElementById('menulist');
    	tmp_root = document.getElementById('menulist').firstChild;
    	childList = root.childNodes;
    	submenus = root.getElementsByTagName("ul");
    	division = root.parentNode;
    	var temp = "";
    	var tableau = new Array;
     
    	/* GET MAIN LI LIST */
    	do{
    	if(tmp_root.nodeName=='LI')
    		{tableau.push(tmp_root.id);}
    	tmp_root=tmp_root.nextSibling;
    	}
    	while(tmp_root.nextSibling)
     
     
    	for(j=0; j < tableau.length; j++)
    	{
    		temp = temp + tableau[j].childNodes[1].childNodes[0].nodeValue + "\n"; //<= AFFICHAGE DU CONTENU QUE JE SOUHAITE
    	}
     
    	division.innerHTML = "<pre>"+temp+"</pre>" + division.innerHTML;
    }
    Citation Envoyé par Bovino
    Attention, IE et FF n'interprètent pas le DOM de la même manière au niveau des sauts de ligne...
    Ra... le cochon d'IE.. bon bah je vais chercher une alternative ^^

  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
    Nos messages se croisent un peu... tu as un début de solution dans mon précédent post que je viens d'éditer
    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
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 30
    Points : 24
    Points
    24
    Par défaut
    Pour ce que je compte faire c'est tout simplement un menu déroulant horizontal ( avec déroulement vers le bas) fin bref ^^

    Dans le cas présent je cherchais a récupérer, le contenu de tout mes LI suivant leur niveau, donc bien "Hello World". ca c'est a peu pres fait (pour FF en tout cas)

    Par contre j'ai un probleme avec ta syntaxe car le compteur du
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for (var i to tableau) {
    }
    contient plus de chose que prevu
    au debut j'ai le bon index mais apres y'a des truc un peu bizarre sorti de nullpart (ou presque)^^
    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
     
    0
    1
    2
    3
    4
    5
    copy
    remove
    contains
    associate
    extend
    merge
    include
    getRandom
    getLast
    each
    test
    rgbToHex
    hexToRgb
    rgbToHsb
    hsbToRgb
    Et donc forcement ca pete ^^
    j'ai du mal faire un truc a ce niveau, je vais me renseigner de ce pas sur ca

    merci de ton aide

  11. #11
    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
    Sinon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(var i=0;i<tableau.length;i++){
    ...
    }
    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

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 30
    Points : 24
    Points
    24
    Par défaut
    Ok, c'est bon, j'avais juste oublier de decommenter la ligne qui genere le id de mes LI

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    for (i=0; i<tableau.length; i++){
    		var elem = document.getElementById(tableau[i]);
    		var tmp = elem.getElementsByTagName("a")[0].innerHTML;
    	}
    Ca marche parfaitement

    Merci bien de ton aide

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

Discussions similaires

  1. [DOM] Génération de XML tout pas beau :(
    Par scorpiwolf dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 23/05/2006, 15h49
  2. [DOM] problème de génération d'un xml avec dom
    Par WalidNat dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 04/05/2006, 17h12
  3. [DOM] help sur Dom et suppression de Child
    Par grinder59 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 30/01/2006, 07h32
  4. [DOM] Génération dynamique fichier xml
    Par Fabouney dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 03/10/2005, 09h45
  5. [XML-DOM][XSD][JAVA] Génération de parseur
    Par charlot44 dans le forum Persistance des données
    Réponses: 2
    Dernier message: 22/06/2005, 12h36

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