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 :

Problème avec méthode "cloneNode()"


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club Avatar de kingmandrax
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 87
    Points : 35
    Points
    35
    Par défaut Problème avec méthode "cloneNode()"
    Salut à tous,

    Je me pose de sérieuses questions sur les effets de la méthode cloneNode(), j'ai l'impression que l'élément renvoyé n'est pas un clone mais un alias...je m'explique : après avoir cloné un élément et tous ces enfants (avec cloneNode(true)), j'ajoute un simple attribut au clone nouvellement créé et ensuite j'affiche le contenu de l'élément original et oh surprise : il a été modifié aussi!!! Quelqu'un pourrait m'apporter une explication à ce phénomène??

    J'aurais vraiment besoin de créer une copie parfaite d'un élément et de ses enfants mais qui soit totalement indépendante de la version originale!! Comment faire??

    Merci bcp!

  2. #2
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    cloneNode crée une copie pas un alias...

  3. #3
    Nouveau membre du Club Avatar de kingmandrax
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 87
    Points : 35
    Points
    35
    Par défaut
    Mais alors comment expliques-tu le phénomène que j'explique?? Quand j'ajoute un noeud ou attribut au clone, l'ajout se fait aussi sur l'arbre original!

  4. #4
    Membre habitué Avatar de lalouve
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2004
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2004
    Messages : 128
    Points : 145
    Points
    145
    Par défaut
    cloneNode(true) clone les éléments et leur attibut le même id et classe que les originaux.

  5. #5
    Nouveau membre du Club Avatar de kingmandrax
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 87
    Points : 35
    Points
    35
    Par défaut
    Oui mais excusez-moi de me répéter mais pourquoi lorsque je modifie le clone, l'original est également modifié?!!

  6. #6
    Membre habitué Avatar de lalouve
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2004
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2004
    Messages : 128
    Points : 145
    Points
    145
    Par défaut
    Tu dois avoir une erreur dans ton code, montres nous ce que tu fais.

  7. #7
    Nouveau membre du Club Avatar de kingmandrax
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 87
    Points : 35
    Points
    35
    Par défaut
    Voilà...sans le contexte bien sûr :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var copy = element.cloneNode(true);
    copy.setAttribute("id", "test");
    Ensuite lorsque je regarde "element", il a également un attribut "id" avec la même valeur alors qu'avant il n'en avait pas du tout (même pas l'attribut "id"!)

  8. #8
    Nouveau membre du Club Avatar de kingmandrax
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2006
    Messages : 87
    Points : 35
    Points
    35
    Par défaut
    Ohlàlà, je devais être très fatigué! J'affichais l'élément cloné et non pas l'original... Bref, tout ça pour pas grand chose! Désolé!

  9. #9
    Membre habitué Avatar de lalouve
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2004
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2004
    Messages : 128
    Points : 145
    Points
    145
    Par défaut
    Y'a pas de mal

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

Discussions similaires

  1. Problème avec méthode UpdateCommand
    Par Nixar dans le forum C#
    Réponses: 1
    Dernier message: 22/07/2008, 22h54
  2. Problème avec méthode unload
    Par label55 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 21/05/2008, 10h45
  3. Problème avec méthode AddFromString
    Par Farbin dans le forum VBA Access
    Réponses: 7
    Dernier message: 04/02/2008, 18h21

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