Метод insertBefore() XML DOM
Определение и использование
Метод 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));