XML DOM insertBefore() methode
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));