Метод 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));