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] comportement node.appendChild( nodeX )


Sujet :

JavaScript

  1. #1
    Membre chevronné Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Par défaut [DOM] comportement node.appendChild( nodeX )
    Bonjour à tous.

    J'aurais juste voulu une confirmation d'un constat que je viens de faire :

    Je souhaite ajouter un élément <option/> simultanément à deux <select/>.

    Pour celà j'utilise le code suivant :
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var newNode = document.createElement("option");
    // ... définition des attributs de newNode
    document.getElementById('select1').appendChild( newNode );
    document.getElementById('select2').appendChild( newNode );

    j'obtiens alors un comportement étrange : le <option/> n'est ajouté que dans le second des deux <select/>. (test effectué en inversant les 2 appels à appendChild).

    Suis-je obligé de ré-initialiser mon noeud <option> entre les 2 ajouts ?

    Merci d'avance de vos contributions.

  2. #2
    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 sais pas si il ne faut pas faire un truc curieux du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myselect.options.length++
    avant d'appender ...

    il y a un truc dans les contributions ..
    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 !

  3. #3
    Membre chevronné Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Par défaut
    en fait, j'ai pas de problème de fonctionnement, j'ai bien des éléments ajoutés, mais uniquement sur une des deux listes si je ne crée pas un nouvel élément DOM entre les deux ajouts. je me demandais donc si ça ne venait pas du fait que j'utilisais le même élément qui qui lorsque je fais un appel à X.appendChild() lui modifierait le parendNode() et m'empêcherait d'ajouter le même élément à 2 nodes différents.

    Le code qui marche pas : seul select2 contiendra ici le option.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var newNode = document.createElement("option");
    // ... définition des attributs de newNode
    document.getElementById('select1').appendChild( newNode );
    document.getElementById('select2').appendChild( newNode );
    Le code qui marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var newNode = document.createElement("option");
    // ... définition des attributs de newNode
    document.getElementById('select1').appendChild( newNode );
    newNode = document.createElement("option");
    // ... définition des attributs de newNode
    document.getElementById('select2').appendChild( newNode );

  4. #4
    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
    arf j'avais pas vu ... tu ne crées qu'un seul node ... normal ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var newNode1 = document.createElement("option");
    // ... définition des attributs de newNode
     
    var newNode2=newNode1.cloneNode(true)
    document.getElementById('select1').appendChild( newNode1 );
    document.getElementById('select2').appendChild( newNode2 );

    En fait il n'y avait qu'une seul nouveau node ...
    et le fait de l'appender Ailleurs ben ça le déplace ...

    tu peux faire le test avec un node existant de la page ... tu l'appendes à un autre endroit, ça le déplacera
    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 !

  5. #5
    Membre chevronné Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Par défaut
    Merci, c'était juste pour une confirmation du comportement, histoire de ne pas tomber à nouveau sur ce genre de problème.

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

Discussions similaires

  1. [DOM] Comportement anormal après createElement
    Par thibane dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 07/11/2008, 09h25
  2. [DOM] comportement du Gestionnaire d'évènements
    Par yjuliet dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/06/2007, 14h03
  3. [DOM] Erreur sur appendChild
    Par helter_skelter dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 28/03/2007, 17h36
  4. [DOM] Problème avec appendChild
    Par it_bcn dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 16/02/2007, 12h12
  5. [DOM] Les nodes dans le modèle DOM
    Par Bele'nos dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 07/03/2005, 22h43

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