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] Copier un arbre DOM en vue de le modifier


Sujet :

JavaScript

  1. #1
    Membre confirmé 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
    Par défaut [DOM] Copier un arbre DOM en vue de le modifier
    Bonjour,
    Pour un script j'ai besoin de parcourir tous les noeuds enfants d'un arbre DOM et effacer certains de ces noeuds. Etant donné que j'utilise l'arbre original pour effectuer la boucle sur tous ses enfants, j'ai alors fait une copie de cet arbre afin d'effectuer les suppression sur ce dernier. Ainsi, les suppressions de noeuds ne devraient intervenir que sur la copie et pas sur l'arbre original!

    Cependant ça ne fonctionne pas, l'arbre original est apparemment modifié.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function test(tree) {        
            var childs = tree.childNodes;
    	var treeCopy = tree;
    	var nbCorrections = 0;
     
    	for (var i=0; i<childs.length; i++) {
    		if (...) {
                       treeCopy.childNodes[i-nbCorrections].parentNode.removeChild(childs[i]);
    		   nbCorrections++;
    		}
    	}
    }
    J'ai isolé le problème, il vient de la ligne treeCopy.childNodes....
    Est-ce quelqu'un peut me donner un coup de main? Je me tape la tête contre mon clavier depuis ce matin!
    Merci d'avance!!!

  2. #2
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Par défaut
    boucle de la fin vers le début
    i--

  3. #3
    Membre confirmé 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
    Par défaut
    Ca ne change rien et je ne vois pas la différence à vrai dire!!

  4. #4
    Membre confirmé 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
    Par défaut
    Personne ne peut me donner une piste?
    En gros il faudrait que je sois capable de créer une copie de l'arbre totalement indépendante de l'autre, histoire que lorsque je modifie une version, l'autre n'est pas affectée!

    J'ai essayé avec la méthode cloneNode(true) mais apparemment il ne copie pas tous les noeuds enfants!

    J'ai vraiment besoin d'aide, merci!

Discussions similaires

  1. [DOM] (org.w3c.dom) copier un noeud d'un fichier XML dans un autre fichier XML
    Par snoop dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 13/02/2007, 17h22
  2. [DOM] Remplacer un arbre DOM par un autre
    Par kingmandrax dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 31/10/2006, 12h20
  3. Recursion sur un arbre DOM
    Par crimsonPhantom dans le forum Général Python
    Réponses: 1
    Dernier message: 22/08/2006, 15h41
  4. [XML][Java] parser plusieurs fichiers en un seul arbre DOM ?
    Par mrlenul dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 29/11/2005, 11h09
  5. [DOM] Serialiser arbre DOM en fichier XML
    Par Overflow64 dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 20/10/2004, 11h53

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