XML DOM insertBefore() methode

Node object reference manual

Definitie en gebruik

De insertBefore() methode kan een nieuwe subnode invoegen voor een bestaande subnode.

Deze methode kan het nieuwe subnode retourneren.

Syntax:

insertBefore(newchild, refchild)
Parameters Beschrijving
newchild Voeg een nieuwe node in
refchild Voeg een nieuwe node in voor deze node

Tips en opmerkingen

Opmerking:Internet Explorer negeert witruimte tussen nodes (bijvoorbeeld, newline tekens), terwijl Mozilla dit niet doet. Daarom gebruiken we in de volgende voorbeelden een functie om het nodigetype van de laatste subnode te controleren.

De nodigetype van een elementnode is 1, dus als de eerste subnode geen elementnode is, wordt deze verplaatst naar de volgende node en wordt verder gecontroleerd of deze een elementnode is. Dit proces gaat door tot de eerste elementsubnode is gevonden. Op deze manier kunnen we in Internet Explorer en Mozilla de juiste methoden verkrijgen.

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

voorbeeld

In alle voorbeelden zullen we XML-bestanden gebruiken books.xmlen plus van JavaScript functies loadXMLDoc().

The following snippet can create a new <book> node and insert this node before the last <book> element in the document:

//check if the last childnode is an element node
function get_lastchild(n)
{
var x=n.lastChild;
while (x.nodeType!=1)
{
x=x.previousSibling;
}
return x;
}
xmlDoc=loadXMLDoc("books.xml");
var newNode=xmlDoc.createElement("book");
var newTitle=xmlDoc.createElement("title");
var newText=xmlDoc.createTextNode("A Notebook");
newTitle.appendChild(newText);
newNode.appendChild(newTitle);
xmlDoc.documentElement.insertBefore(newNode,get_lastchild(x));

Node object reference manual