Metoda insertBefore() w XML DOM

Definicja i użycie

Metoda insertBefore() wstawia nowy podwęzeł przed istniejącym podwęzłem.

Ta metoda zwraca nowy podwęzeł.

Gramatyka:

elementNode.insertBefore(new_node, existing_node)
Parametry Opis
new_node Wymagane. Węzeł do wstawienia.
existing_node Wymagane. Istniejący węzeł. Wstaw nowy węzeł przed tym węzłem.

Wskazówki i uwagi:

Uwaga:Internet Explorer ignoruje generowane puste węzły tekstowe między węzłami (np. znaki nowej linii), podczas gdy Mozilla nie robi tego. Dlatego w poniższych przykładach używamy funkcji do sprawdzania typu węzła ostatniego podwęzła.

Typ węzła elementu to 1, więc jeśli ostatni podwęzeł nie jest węzłem elementu, przechodzimy do poprzedniego węzła i sprawdzamy, czy jest to węzeł elementu. Proces ten będzie kontynuowany, aż znajdziemy ostatni podwęzeł, który jest węzłem elementu. Dzięki temu w Internet Explorer i Mozilla uzyskamy poprawne wyniki.

Jeśli chcesz uzyskać więcej informacji na temat różnic między przeglądarkami IE i Mozilla, odwiedź sekcję XML DOM w教程ach CodeW3C.com: Przeglądarka DOM w tej sekcji.

przykład

W wszystkich przykładach będziemy używać pliku XML books.xmli funkcję JavaScript loadXMLDoc()

Poniższy fragment kodu tworzy nowy węzeł <book> i wstawia go przed ostatnim elementem <book> w dokumencie:

//Sprawdź, czy ostatni węzeł potomny to węzeł elementowy
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));