Метод insertBefore() в XML DOM

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

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

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

Грамматика:

elementNode.insertBefore(new_node, existing_node)
Параметр Описание
new_node Обязателен. Узел, который нужно вставить.
existing_node Обязателен. Существующий узел. Вставить новый узел перед этим узлом.

Подсказки и комментарии:

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

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

Для получения более подробной информации о различиях между IE и Mozilla браузерами обратитесь к разделу XML DOM на сайте CodeW3C.com: DOM браузер в этом разделе.

пример

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

Этот фрагмент кода создает новый узел <book> и вставляет его перед последним узлом <book> в документе:

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