2010-11-03 3 views
0

J'ai créé un fragment DOM où je suis d'ajouter plusieurs childNodes dans une boucle:Javascript append fragment à un élément HTML existant

fragment.appendChild(clone) 

Je veux prendre ce fragment et l'utiliser pour remplacer un élément HTML existant contient déjà ces nœuds.

Je peux utiliser

myContainer.appendChild(fragment) 

Cependant, cela se fait aussi dans une boucle et le fragment est ajouté trop de fois. Comment puis-je obtenir le fragment, l'ajouter à myContainer et supprimer aussi les anciens enfants de myContainer.

Merci.

Répondre

0

Ne pouvez-vous pas ajouter le fragment après la fin de la boucle? En ce qui concerne la suppression des noeuds enfants actuels, vous pouvez les parcourir tous et utiliser la fonction removeChild, ou simplement définir innerHTML de l'élément sur une chaîne vide. Si vous réinitialisez innerHTML avant d'ajouter le fragment, cela devrait fonctionner.

myContainer.innerHTML = ""; 
myContainer.appendChild(fragment); 
1

Vous voulez probablement:

while (myContainer.childNodes.length > 0) { 
    myContainer.removeChild(myContainer.childNodes[0]); 
} 

myContainer.appendChild(fragment); 
0

Si je vous comprends bien, vous créez un nouveau noeud avec des enfants, et vous voulez que ce nouveau nœud pour remplacer un nœud existant dans votre page.

Vous pouvez:

  • Retirez tous les enfants du nœud existant et ajouter les nouveaux enfants au nœud existant
  • Ajouter tous les enfants à un autre noeud (je pense que ce que vous faites : ajout au fragment), puis supprimez le nœud existant et ajoutez le nœud à cet emplacement.

Voir removeChild et appendChild

+0

myContainer.replaceChild (fragment, myOldElement) ne fonctionne que pour un enfant. Dans mon fragment et myOldElement j'ai plusieurs nœuds enfants. je cherche un moyen d'utiliser replaceChild() pour remplacer plusieurs childrens avec d'autres éléments à la fois ... pas seulement un – Mircea

+0

@Mircea, vous dites que vous voulez quelque chose comme un 'replaceChild' qui fonctionne sur les tableaux par exemple? J'ai peur qu'il n'y en ait pas. Vous devriez appeler cela en boucle. – Nivas

+0

oui quelque chose comme replaceChild qui peut travailler non seulement pour un enfant mais pour une collection d'enfants. – Mircea

Questions connexes