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 :

Parcours des éléments du DOM


Sujet :

JavaScript

  1. #1
    Membre éclairé Avatar de Lekno
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    883
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 883
    Points : 761
    Points
    761
    Par défaut Parcours des éléments du DOM
    Bonjour à tous, j'essaye de parcourir tout les elements d'un tableau se trouvant dans une DIV à l'aide de JS, je ne parviens pas à faire fonctionner ma boucle sauriez vous m'indiquer d'ou peut provenir mon erreur ?

    Actuellement j'essaie de procéder comme ci-dessous:

    -> recuperation de la DIV contenant mes "table"
    -> parcours des TR
    -> boucle pour lister le contenu des td dans un tableau

    structure de la page en CSS SELECTOR

    MAIN DIV CSS selector:#Bat_Infos_9999
    Table 1 CSS selector:#Bat_Infos_9999 > table:nth-child(3)
    Table 2 CSS selector:#Bat_Infos_9999 > table:nth-child(6)
    Table 3 CSS selector:#Bat_Infos_9999 > table:nth-child(9)

    structure de la page avec XPATH SELECTOR


    MAIN DIV XPATH selector://*[@id="Bat_Infos_9999"]
    Table 1 XPATH selector://*[@id="Bat_Infos_9999"]/table[1]
    Table 2 XPATH selector://*[@id="Bat_Infos_9999"]/table[2]
    Table 3 XPATH selector://*[@id="Bat_Infos_9999"]/table[3]
    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    var   matchesinfosbat = document.getElementById('#Bat_Infos_9999');
    var	  trt = matchesinfosbat.getElementsByTagName("table");	
    var	  trs = trt.getElementsByTagName("tr");
    var   tds = null;
     
    if(matchesinfosbat){
     for (var i=0; i<trs.length; i++){
    	tds = trs[i].getElementsByTagName("td");
    	nodes[3].push(tds.innerHTML);
     }
    }else{
    	nodes[3]	=	0;	
    }



    erreur console.log

    TypeError: 'null' is not an object (evaluating 'matchesinfosbat.getElementsByTagName')
    Merci par avance !!

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 098
    Points : 44 671
    Points
    44 671
    Par défaut
    Bonjour,
    cela veux dire que ton élément n'est pas récupéré et pour cause document.getElementById('#Bat_Infos_9999'); ou plus exactement le # en trop dans l'identifiant.

  3. #3
    Membre éclairé Avatar de Lekno
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    883
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 883
    Points : 761
    Points
    761
    Par défaut
    Merci pour ton retour rapide, après correction et teste j'ai toujours la même erreur


    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    TypeError: 'undefined' is not a function (evaluating 'trt.getElementsByTagName("tr")')

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 098
    Points : 44 671
    Points
    44 671
    Par défaut
    ...teste j'ai toujours la même erreur
    non ce n'est pas la même elle est 2 lignes après.
    Attention :
    getElementsByTagName("table") retourne une collection d'éléments donc pour avoir accès au premier il te faut écrire par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    trs = trt.getElementsByTagName[0]("tr");
    tu aurais également pu faire cela d'une seule instruction en utilisant querySelectorAll
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    allTRs = doument.querySelectorAll('#Bat_Infos_9999 TR');  // là il faut le #
    ou pour ton besoin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    allTDs = doument.querySelectorAll('#Bat_Infos_9999 TD');  // là il faut le #
    il ne te reste plus qu'à boucler sur la nodeList.

  5. #5
    Membre éclairé Avatar de Lekno
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    883
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 883
    Points : 761
    Points
    761
    Par défaut
    Effectivement avec ton analyse j'ai beaucoup compliqué la chose, je n'ai plus d'erreur cependant mon count reste à 0


    La div existe bien, le fait qu'il y ai plusieurs "<table>" ne peuvent pas poser soucis ?

    Code js : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    var   matchesinfosbat = document.querySelectorAll('#Bat_Infos_9999 TD');				  
    if(matchesinfosbat){
    	for (var i=0; i<matchesinfosbat.length; i++){
    		nodes[3].push(matchesinfosbat[i].innerHTML);
    	}
    }else{
    		nodes[3]	=	0;	
    }

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 098
    Points : 44 671
    Points
    44 671
    Par défaut
    var matchesinfosbat = document.getElementById('#Bat_Infos_9999 TD');


    Je crois que tu te compliques la vie inutilement ce qui t'en fait perdre une logique simple
    exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // réceptacle de données
    var arrayHTML = [];
    // récupération de toutes les TD
    var allTDs = document.querySelectorAll('#Bat_Infos_9999 TD');
    // parcours de toutes ces TD
    for( var i=0; i < allTDs.length; i++){
        // mise en "stock" de leur contenu
        arrayHTML.push( allTDs[i].innerHTML);
    }
    // ici on en fait ce que l'on veut
    console.log( arrayHTML);

  7. #7
    Membre éclairé Avatar de Lekno
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    883
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 883
    Points : 761
    Points
    761
    Par défaut
    Merci pour ton retour, nous avons croisé nos réponses

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var   matchesinfosbat = document.querySelectorAll('#Bat_Infos_9999 TD');				  
    if(matchesinfosbat){
    	for (var i=0; i<matchesinfosbat.length; i++){
    		nodes[3].push(matchesinfosbat[i].innerHTML);
    	}
    }else{
    	nodes[3]	=	0;	
    }
    console.log(nodes[3].length);
    me retourne un toujours 0, la div est bien présente, avoir de multiples "<table>" dans celle ci ne peut pas poser de soucis ?

  8. #8
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 098
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 098
    Points : 44 671
    Points
    44 671
    Par défaut
    simplement ta matchesinfosbat est une listeNode vide, est tu sûr de ton sélecteur Bat_Infos_9999 ?

    Pourrait-on voir ton code HTML, pas 10000 lignes quand même !

    avoir de multiples "<table>" dans celle ci ne peut pas poser de soucis ?
    Non puisque la méthode récupères TOUS les éléments TD contenus dans l'élément ayant pour ID "Bat_Infos_9999" et ce quelque soit le nombre de TABLE.

  9. #9
    Membre éclairé Avatar de Lekno
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2010
    Messages
    883
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 883
    Points : 761
    Points
    761
    Par défaut
    Merci pour ton retour, c'est à présent fonctionnel via les exemples que tu me fournis ci-dessus

    merci encore

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

Discussions similaires

  1. exploitatation des éléments du DOM
    Par hastiok dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 01/12/2009, 12h40
  2. parcours des éléments d'un document
    Par r83 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 15/09/2009, 17h19
  3. Parcours des éléments d'un ListView
    Par Nalfeim dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 15/07/2008, 15h32
  4. [DOM] Placer des éléments du DOM dans un array()
    Par strat0 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/08/2007, 15h06
  5. [POO & DOM] programation js par enrichissement des éléments du DOM
    Par sekaijin dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 07/01/2007, 15h25

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