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 :

getElementsByName sur un div


Sujet :

JavaScript

  1. #1
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut getElementsByName sur un div
    Bonjour,
    un petit moment que j'avais pas fait de JS et je suis étonné de voir que getElementsByName() est une méthode uniquement de document ?
    code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var element = document.getElementById(divId);
    var elements = element.getElementsByName(name);
    La première ligne me retourne un div. La 2e est censée me retourner tous les enfants de ce div dont le nom est name. Mais ca plante :
    element.getElementsByName('rtrtr') is not a function

    Est-ce que je suis obligé de parcourir chaque child et de tester leur nom ?
    (Si oui, la manière compatible est bien de passer par childNodes ?)
    Il me semblait qu'il y avait une méthode plus simple.
    Merci d'avance.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 20
    Points : 24
    Points
    24
    Par défaut Réponse
    Pourquoi ne travailles-tu pas avec getElementByID ?
    Ou bien imbriquer une form dans ta div et utiliser :
    document.forms[].elements[]
    Dans la deuxième hypothèse, tu peux par exemple, si ta form est la première du document et que tu veux récupérer la valeur d'un champ texte (input text) et que cet élement est le premier élément de ta form,
    tu écris:

    document.forms[0].element[0].value

    PAT

  3. #3
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Merci mais ça n'est pas ma question
    Je veux récupérer les enfants d'un élément div nommés name. L'intérêt justement de les nommer de la même manière étant de récupérer directement un groupe d'éléments sans connaître leurs id.

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    Citation Envoyé par Djakisback Voir le message
    je suis étonné de voir que getElementsByName() est une méthode uniquement de document ?
    Ben tu t'attendais à quoi ? screen ?
    C'est même plus restreint que document, puisqu'un name n'est censé être présent que dans un form
    Citation Envoyé par Djakisback Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var element = document.getElementById(divId);
    var elements = element.getElementsByName(name);
    La première ligne me retourne un div. La 2e est censée me retourner tous les enfants de ce div dont le nom est name. Mais ca plante :
    element.getElementsByName('rtrtr') is not a function
    Ça laisse supposer que divId ne correspond à aucun élément existant dans ta page.

    Ceci dit, si tu veux éviter ce genre de question existentielle, il vaudrait mieux éviter de donner à tes variables des noms correspondant à des termes réservés du langage (name, element, elements bref, toute).
    Certains nav n'apprécient pas du tout

    A+

  5. #5
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    Non dans mes souvenirs getElementsByName() était une méthode de Node. Ce qui permettait justement de spécifier la branche dans laquelle tu veux rechercher, c'est comme ça que ça marche d'ailleurs sur pas mal d'implémentation du DOM, j'ai dû confondre.
    Merci je vais donc m'arranger en parcourant les fils ou autrement

    Idem getElementsByTagName() retournait que les noeuds fils, etc.
    Si getElementById(divId) retourne bien mon div.

  6. #6
    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 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    avec jquery ...

    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
    <script type='text/javascript' src='jquery-1.4.1.min.js'></script>
    <title>test test test test test test test test</title>
    </head>
     
    <body>
    <div id="foo">
    <span name="bar">test</span>
    <span name="bar">test</span>
    <span name="bar">test</span>
    <span name="bar">test</span>
     
    <span name="bar">test</span>
    <span name="bar">test</span>
    <span name="bar">test</span>
    <span name="bar">test</span>
    <input type="text" name="bar" />
    </div>
     
    <script type="text/javascript">
        //<![CDATA[
    var temps = $("#foo > [name=bar]");
    alert( temps.length );
      //]]>
    </script>
    </body>
     
    </html>

  7. #7
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Points : 2 273
    Points
    2 273
    Par défaut
    yep pas mal

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

Discussions similaires

  1. Une action retardée sur un div
    Par krfa1 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 21/06/2006, 16h58
  2. Boucle sur chaque div avec class= ....
    Par zevince dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/04/2006, 12h12
  3. question sur les DIV
    Par steve o'steen dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 24/03/2006, 10h28
  4. Opacité sur bloc Div - Incompatibilité et ne fonctionne pas
    Par killprog dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 15/03/2006, 15h31
  5. OnMouseOut sur un div
    Par krfa1 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 14/02/2006, 11h30

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