Método insertBefore() do XML DOM
Definição e uso
O método insertBefore() pode inserir um novo nó filho antes de um nó filho existente.
Este método pode retornar o novo nó filho.
Sintaxe:
insertBefore(newchild, refchild)
Parâmetros | Descrição |
---|---|
newchild | Inserir novo nó |
refchild | Inserir novo nó antes deste nó |
Dicas e notas
Nota:O Internet Explorer ignorará os nós de texto em branco gerados entre os nós (por exemplo, sinais de nova linha), enquanto o Mozilla não fará isso. Portanto, no exemplo a seguir, usaremos uma função para verificar o tipo de nó do último nó filho.
O tipo de nó do nó de elemento é 1, portanto, se o primeiro nó filho não for um nó de elemento, ele será movido para o próximo nó e continuará a verificar se este nó é um nó de elemento. O processo continuará até que o primeiro nó filho de elemento seja encontrado. Com esse método, podemos obter o método correto no Internet Explorer e no Mozilla.
Dica:Para mais informações sobre as diferenças entre XML DOM no IE e no Mozilla Navigator, acesse nossa Navegador DOM Capítulo.
Exemplo
Em todos os exemplos, usaremos o arquivo XML books.xmle também a função JavaScript loadXMLDoc().
O fragmento abaixo pode criar um novo nó <book> e inserir este nó antes do último elemento <book> do documento:
//verificar se o último nó filho é um nó de elemento
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));