Mover un nodo de tipo elemento.

Agrega un nuevo nodo al final de la lista de un elemento hijo de un elemento padre especificado.

Para mover un nodo y todos sus descendientes sólo necesitamos la referencia del mismo. Debemos utilizar el método ya conocido appendChild. Este método agrega el nodo que le indicamos a la nueva ubicación dentro del árbol y lo elimina automáticamente de su posición actual.

Para ver el funcionamiento de mover un nodo desarrollaremos un ejemplo que mueva el primer item de una lista no ordenada y lo disponga en otra lista (para facilitar el algoritmo todos los elementos "li" de la lista "ul" estarán en la misma línea de texto para que no haya nodos de texto)

<!DOCTYPE html>
<html> <head> <title>Problema</title> <script> function moverItem() var ref1=document.getElementById('lista1'); var refhijo=ref1.firstChild; var ref2=document.getElementById('lista2'); ref2.appendChild(refhijo); } </script> </head> <body> <ul id="lista1"> <li>Opcion 1.</li> <li>Opcion 2.</li> <li>Opcion 3.</li> </ul> <input type="button" value="Mover elemento" onClick="moverItem()"> <ul id="lista2"> </ul> </body> </html>


El código en javascript es:

{
function moverItem()
  var ref1=document.getElementById('lista1');
  var refhijo=ref1.firstChild;
  var ref2=document.getElementById('lista2');
  ref2.appendChild(refhijo);
}

Obtenemos primero la referencia a la primera lista "ul":

  var ref1=document.getElementById('lista1');

Obtenemos luego la referencia al primer "li" contenido en el "ul":

  var refhijo=ref1.firstChild;

Ahora obtenemos la referencia a la segunda lista "ul":

  var ref2=document.getElementById('lista2');

Por último añadimos la referencia del "li" al segundo "ul":

  ref2.appendChild(refhijo);

Es muy importante notar que cuando agregamos el el item a la segunda lista desaparece de la primera.