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 :

Parcourir une NodeList et accéder à un élément enfant grâce à sa "classe" ou "id"


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 17
    Par défaut Parcourir une NodeList et accéder à un élément enfant grâce à sa "classe" ou "id"
    Bonjour à vous tous développeurs, développeuses !


    J'ai une petite énigme et j'ai besoin de vos lanternes

    Est-Il possible de réaliser un ".getElementByClassName" ou ".getElementById" sur un élément d'une NodeList ?

    Le nodelist se comportant un peu comme un tableau, j’accède à un "item" grâce à son index : Nodelist[index].getElementbyId(MonId) ce qui me permet (normalement) d'obtenir un élément.
    J'essaie de réaliser un getElementById() ou classname() sur cet Element... et la c'est le drame ! ERREUR : ".getElementById is not a function"

    Mon idée de secours consiste donc à créer un nouvel objet document, y insérer mon élément issu de la nodelist afin de pouvoir faire des getElementById et getElementByClassName.

    or, ça me parait un peu gros, pourquoi je ne peux pas faire .getElementByClassName sur mon element de nodeList ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var Contacts = document.getElementById('liste_contact').childNodes;
     
    for (var i = 0; i < Contacts.length; i++) {
            console.log(Contacts[i].getElementById('Nom_Groupe'));        
          }
    erreur retournée -> Contacts.getElementById is not a function


    ps :
    "Vous pouvez également appeler getElementsByClassName () sur n'importe quel élément" -> doc js

    En vous remerciant par avance cher communautés !
    Cordialement,

  2. #2
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    Par défaut
    le plus simple est d'utiliser https://developer.mozilla.org/fr/doc.../querySelector

    => console.log(Contacts[i].querySelector('#Nom_Groupe'));

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 17
    Par défaut
    Merci pour ta réponse !

    j'ai effectivement essayé avec querySelector

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        var Contacts = document.getElementById('liste_contact').childNodes;
     
        for (var i = 0; i < Contacts.length; i++) {
            console.log(Contacts[0].querySelector('#Nom_Groupe'));
        }
     
    Mais j'obtiens toujours le même message d'erreur "querySelector is not a function" 8O
    Je ne comprends pas pourquoi j'ai ce comportement
    J'ai donc vérifié Contacts et ça me renvoi bien un objet NodeList(139)..

    Nom : nodelist.PNG
Affichages : 780
Taille : 3,7 Ko

    Je vais investiguer et vous tiendrais au courant de mon erreur

  4. #4
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    Par défaut
    vi, j'ai répondu trop vite.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      var Contacts = document.getElementById('liste_contact');
     
       console.log(Contacts.querySelector('#Nom_Groupe'));
    les id doivent être unique, il ne peut pas y voir plusieures nodes ayant le même ID, sinon tu envoi l'interpréteur JS dans les choux

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 17
    Par défaut
    J'ai effectivement le même ID pour tout les nodes , ça me rassure quelque-part.. au moins je sais d'ou peut venir l'erreur

    merci, je vais voir comment je vais traiter le problème

  6. #6
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    Par défaut
    cela aurait été plus clair de voir à quoi ressemblait ce bout de code html..

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2016
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2016
    Messages : 17
    Par défaut
    Ne pouvant utiliser getElementById() et GetElementByClassName() et querySelector() avec Childnodes() ou chaque enfants possèdent les mêmes id :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     var Contacts = document.getElementById('liste_contact').childNodes;
     
        for (var i = 0; i < Contacts.length; i++) {
            console.log(Contacts[0].querySelector('#Nom_Groupe'));
        }
    Erreur "querySelector is not a function"

    j'ai procédé autrement, en remplaçant Childnodes par children & en restant sur les conseils avec QUERYSELECTOR

    Resultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        var ListeContacts = document.getElementById('liste_contact').children;
     
        for (var i = 0; i < ListeContacts.length ; i++){
            NomGroupeCarte = ListeContacts[i].querySelector('#Nom_Groupe').getElementsByTagName('p')[0].innerText;
             if (NomGroupeCarte.toLowerCase().includes(NomDeGroupeInput.toLowerCase()) ){
                 console.log(ListeContacts[i].style.display='block');
            }
            else{
                ListeContacts[i].style.display='none';
            }
        }
    résultat ça fonctionne ! plus d'erreur !


    Merci !

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

Discussions similaires

  1. [Python 3.X] Parcourir une liste et afficher un élément
    Par nsam75 dans le forum Général Python
    Réponses: 1
    Dernier message: 30/11/2018, 19h26
  2. parcourir une liste et supprimer des éléments selon une condition
    Par jean-pat dans le forum Général Python
    Réponses: 17
    Dernier message: 17/03/2017, 22h07
  3. Accéder à un élément particulier d'une Map
    Par oc_alex86 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 04/05/2007, 15h14
  4. Réponses: 6
    Dernier message: 04/05/2007, 14h41
  5. Réponses: 7
    Dernier message: 30/03/2006, 10h04

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