2009-07-23 10 views
0

Je souhaite supprimer ci-dessous les éléments span du div (<div id='foo'>) et ajouter les nœuds nouvellement créés à chacun d'entre eux.Suppression et ajout d'un nœud

J'utilise une boucle pour traverser tous les enfants du div, et pour chaque nœud trouvé je le supprime avec removeChild et j'ajoute un nœud nouvellement créé.

Je reçois o/p comme

<div id='foo'> 
    <SPAN>new text</SPAN> 
</div> 

Je veux l'o/p comme suit

<div id='foo'> 
    <SPAN>new text</SPAN> 
    <SPAN>new text</SPAN> 
    <SPAN>new text</SPAN> 
</div> 

Code pour le problème est le suivant

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<HTML> 
<HEAD> 
    <TITLE> New Document </TITLE> 
    <META NAME="Generator" CONTENT="EditPlus"> 
    <META NAME="Author" CONTENT=""> 
    <META NAME="Keywords" CONTENT=""> 
    <META NAME="Description" CONTENT=""> 
</HEAD> 

<BODY> 
<div id='foo'> 
    <SPAN>welcome to the world of translation.</SPAN> 
    <SPAN>Thank you for using it</SPAN> 
    <SPAN>visit again</SPAN> 
</div> 
<table border="0" cellspacing="5" cellpadding="0" class="lipi-header-logo-menu"> 
     <tr> 
      <td align="left"> 
       <SPAN>Hello</SPAN> 
      </td> 
      <td align="left"> 
       World is not enough 
      </td> 
     </tr> 
</table> 
<div><a href="aa" id="id">this is a test</a></div> 

<script> 
var element = document.getElementById('foo'); 

seg = document.createElement('SPAN'); 
root_1_SPAN_1_text = document.createTextNode('new text'); 
seg.appendChild(root_1_SPAN_1_text); 

if (element.hasChildNodes()) 
{ 
    var children = element.childNodes; 
    for (var i = 0; i < children.length; i++) 
    { 
    if(children[i].nodeName=="#text") 
    { 
     continue; 
    } 
    element.removeChild(children[i]); 
    element.appendChild(seg); 
    }; 
}; 


    </script> 
</BODY> 
</HTML> 

Merci à l'avance

Répondre

2

Vous êtes re-annexant le même nœud à chaque fois, qui se déplace juste (il ne copie pas)

Modifier ceci:

element.appendChild(seg); 

à cette

element.appendChild(seg.cloneNode(true)); 
Questions connexes