Метод insertBefore() XML DOM

Референс-мануал по объекту Node

Определение и использование

Метод insertBefore() может вставить новый подузел перед существующим подузлом.

Этот метод может вернуть новый подузел.

Грамматика:

insertBefore(newchild, refchild)
Параметры Описание
newchild Вставить новый узел
refchild Вставить новый узел перед этим узлом

Советы и комментарии

Комментарий:Internet Explorer будет игнорировать пустые текстовые узлы, созданные между узлами (например, символы перевода строки), в то время как Mozilla этого не делает. Поэтому в следующих примерах мы будем использовать функцию для проверки типа узла последнего подузла.

Тип узла элемента узла равен 1, поэтому если первый подузел не является элементом узла, он перемещается к следующему узлу и продолжает проверять, является ли этот узел элементом узла. Этот процесс продолжается до тех пор, пока не будет найден первый элемент подузла. Таким образом, мы можем получить правильный метод в Internet Explorer и Mozilla.

Совет:Для получения дополнительной информации о различиях в XML DOM между браузерами IE и Mozilla, пожалуйста, посетите наш DOM браузер Разделы.

Пример

Во всех примерах мы будем использовать файлы XML books.xmlи функции JavaScript loadXMLDoc().

Следующий фрагмент может создать новый узел <book> и вставить его перед последним элементом <book> в документе:

//проверка, является ли последний childnode узлом элемента
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));

Референс-мануал по объекту Node