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));