XML DOM insertBefore() metod
Definition och användning
insertBefore() metoden infogar en ny barnnod innan en befintlig barnnod.
Denna metod returnerar den nya barnnoden.
Syntaks:
elementNode.insertBefore(new_node, existing_node)
Parameter | Beskrivning |
---|---|
new_node | Obligatorisk. Noden att infoga. |
existing_node | Obligatorisk. Redan existerande nod. Infoga ny nod innan denna nod. |
Tips och kommentarer:
Kommentar:Internet Explorer ignorerar de tomma textnoderna som genereras mellan noder (t.ex. nyckelradcharakterer), medan Mozilla inte gör det. Därför använder vi en funktion för att kontrollera nodtypen för den sista barnnoden i följande exempel.
Elementnodens nodtyp är 1, så om den sista barnnoden inte är en elementnod, flyttas till föregående nod och kontrolleras om denna nod är en elementnod. Denna process fortsätter tills den sista barnnoden som är en elementnod hittas. Genom denna metod får man korrekt resultat i både Internet Explorer och Mozilla.
För mer information om skillnader mellan IE och Mozilla-browsare, besök CodeW3C.coms XML DOM-tutorial. DOM-browsare denna sektion.
Fall
I alla exempel kommer vi att använda XML-filer books.xmloch JavaScript-funktion loadXMLDoc()。
Följande kodsegment skapar en ny <book> nod och sätter in den innan den sista <book> elementen i dokumentet:
//kontrollera om den sista barnnoden är en elementnod
function get_lastchild(n)
{
x=n.lastChild;
while (x.nodeType!=1)
{
x=x.previousSibling;
}
return x;
}
xmlDoc=loadXMLDoc("books.xml");
newNode=xmlDoc.createElement("book");
newTitle=xmlDoc.createElement("title");
newText=xmlDoc.createTextNode("A Notebook");
newTitle.appendChild(newText);
newNode.appendChild(newTitle);
xmlDoc.documentElement.insertBefore(newNode,get_lastchild(x));