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