XML DOM replaceChild() methode

Node object reference manual

Definitie en gebruik

De replaceChild() methode kan een kindknooppunt vervangen door een ander.

Als de vervanging succesvol is, kan deze methode het vervangen knooppunt retourneren, indien de vervanging mislukt, retourneert het NULL.

Syntaxis:

nodeObject.replaceChild(new_node,old_node)
Parameters Beschrijving
new_node Verplicht. Specificeer het nieuwe knooppunt.
old_node Verplicht. Specificeer het te vervangen knooppunt.

Tips en opmerkingen

Opmerking:Internet Explorer neemt de lege tekstknooppunten tussen knooppunten niet op (bijvoorbeeld, een returnteken), terwijl Mozilla dit wel doet. Daarom gebruiken we in de volgende voorbeelden een functie om het knooppunttype van het eerste kindknooppunt te controleren.

Het knooppunttype van een elementknooppunt is 1, dus als het eerste kindknooppunt geen elementknooppunt is, zal het naar de volgende knooppunt verhuizen en vervolgens controleren of dit knooppunt een elementknooppunt is. Dit proces zal doorgaan totdat het eerste elementknooppunt wordt gevonden. Op deze manier kunnen we in Internet Explorer en Mozilla de juiste methode verkrijgen.

Tip:Voor meer informatie over de verschillen tussen de XML DOM van IE en Mozilla, bezoek onze DOM-browser hoofdstukken.

voorbeeld

In alle voorbeelden gebruiken we de XML-bestand books.xmlen de JavaScript-functie loadXMLDoc()

De volgende codefragment kan de <title> element van het eerste <book> element vervangen:

//controleer of de eerste kindknooppunt een elementknooppunt is
function get_firstchild(n)
{
var x=n.firstChild;
while (x.nodeType!=1)
  {
  x=x.nextSibling;
  }
return x;
}
xmlDoc=loadXMLDoc("books.xml");
//maak een element met de naam title en een tekstknooppunt aan
var newNode=xmlDoc.createElement("title");
var newText=xmlDoc.createTextNode("Giada's Family Dinners");
//add the text node to the title node
newNode.appendChild(newText);
//replace the first child node with the new node
var x=xmlDoc.getElementsByTagName("book")[0];
x.replaceChild(newNode,get_firstchild(x));
//output all titles
var y=xmlDoc.getElementsByTagName("title");
for (i=0;i<y.length;i++)
  {
  document.write(y[i].childNodes[0].nodeValue);
  document.write("<br />");
  }

Output:

Giada's Family Dinners
Harry Potter
XQuery Kick Start
Learning XML

Node object reference manual