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] firstChild, nextSibling et les attributs


Sujet :

JavaScript

  1. #1
    Inactif Avatar de Hibou57
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 852
    Par défaut [DOM] firstChild, nextSibling et les attributs
    Bonjour, bonjour

    Jusqu'ici je n'avais toujours employé firstChild et nextSibling que pour récupérer des éléments. Je dois maintenant explorer des noeuds en explorant leurs attributs. Comme il existe une valeur de nodeType, la valeur "2", qui signifie « attribute », je pensais naïvement que cette valeur de nodeType existe parce que l'exploration avec first/lastChild et next/previousSibling pouvait renvoyer des attributs, et qu'il fallait donc bien pouvoir les différencier des noeuds texte et noeuds élément.

    Mais voilà, je m'aperçois que concrêtement nextSibling ne renvoit jamais d'attributs. Pourtant il n'existe pas de « firstAttribute ». Ça c'est pour la surprise.

    Maintenant le problème : l'utilisation de la liste attributes ne me convient pas, parce qu'elle est trop longue sous IE (elle y contient un important nombre d'attributs : implicites, inférés, etc ... listez là pour vous en convaincre)

    Peut-être que je me pose la question un peu tard, mais quel est le point d'entrée pour explorer tous les noeuds, attributs compris ? (et que ça fonctionne sous IE)

    Marci

    P.S. Ma surprise est d'autant plus grande que les éléments de la liste attributes définissent une propriété nodeName (même s'ils ont aussi une propriété name).

  2. #2
    Inactif Avatar de Hibou57
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 852
    Par défaut
    Bon, effectivement, il n'existe aucun moyen d'obtenir directement la listes réelle des attributs, et encore moins de solution comme celle d'y accéder comme s'il s'agissait de noeuds ordinnaires... mwép.

    Il existe cependant une propriété des attributs, qui permet de les filtrer : cette propriété se nomme specified.

    On peut faire par exemple
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if (element.attributes[i].specified) {
       // User of JavaScript application defined attribute
    }
    else {
       // Automatic or ghost attribute
    }

    Je marque « Résolu ».... mais insatisfaisant quand-même : parce que quand on voit l'énorme quantité d'attribut inutile que contient la liste attributes, ça se ressent sévérement sur les procédures fortement itératives ... pffff.... (le temps d'execution qu'elles devraient avoir peut être multiplié jusqu'à 5 ou 10 fois)

  3. #3
    Membre Expert 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
    Par défaut
    Salut,
    la methode de NamedNodeMap, getNamedItem(String name) peut peut-être aussi t'être utile, il faut bien sur connaître le nom de l'attribut :/
    Bye


    getNamedItem
    Retrieves a node specified by name.
    Parameters

    name of type DOMString
    The nodeName of a node to retrieve.

    Return Value

    Node


    A Node (of any type) with the specified nodeName, or null if it does not identify any node in this map.

  4. #4
    Inactif Avatar de Hibou57
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 852
    Par défaut
    Alut Djakyou'reback,

    Citation Envoyé par Djakisback Voir le message
    Salut,
    la methode de NamedNodeMap, getNamedItem(String name) peut peut-être aussi t'être utile, il faut bien sur connaître le nom de l'attribut :/
    Bye
    Dans le cas de cette application, il s'agit de plusieurs noeuds (noeuds attributs), qui ont des noms différents... et même si ces noms pourraient êtres désignés par un schéma (pattern), je ne sais pas si getNamedItem accepte les schémas.

    Merci de m'avoir parlé de NamedNodeMap, que je ne connaissais pas.

    ....... bonne journée à toi

    EDIT:
    Apparement NamedNodeMap existe dans les API DOM XML, mais pas pour le DOM HTML.

  5. #5
    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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    Je regarderais demain au bureau mais j'ai eu afaire aux attributs ...
    J'avais trouvé un truc dans une boucle for attr in elt ... masi là ma mémoire lme fait défaut ...
    à demain
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  6. #6
    Inactif Avatar de Hibou57
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 852
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    Je regarderais demain au bureau mais j'ai eu afaire aux attributs ...
    J'avais trouvé un truc dans une boucle for attr in elt ... masi là ma mémoire lme fait défaut ...
    à demain
    Waahhh... ma grenouille préférée Ca fait longtemps que je l'avais pas croisé ici.... en plus y va y avoir une surprise... Choueetttte

    J'attend l'astuce avec impatience (en attendant, je sèche sur un détail de mon appli, mais qui n'a rien à voir avec ça :-/ )

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

Discussions similaires

  1. [DOM] Entités dans les attributs d'un XML généré par DOM
    Par angelinemm dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 19/05/2008, 09h26
  2. [DOM] Comment modifier via le DOM les attributs d’un champ INPUT ?
    Par tavarlindar dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 16/04/2008, 13h47
  3. [DOM] Récupérer les attributs d'un fichier XML en PHP
    Par ePsymon dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 08/02/2008, 11h51
  4. [DOM] Récupérer les attributs d'une classe CSS ?
    Par titoumimi dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 10/07/2007, 14h33
  5. [DOM Javascript]Récupérer les attributs
    Par gabychon dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 02/05/2006, 15h21

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