Pregunta

Estoy escribiendo una secuencia de comandos que necesita mover un elemento de nodo de ajuste alrededor de la página. Encuentro que cuando hago esto, remuevo a los niños previamente envueltos. ¿Cómo anulo los hijos de un nodo para poder mover ese nodo padre a otra parte?

Estaba pensando en algo como esto:

  var parg = document.getElementById("blah");

  if (parg.hasChildNodes())
   {
     var children = parg.childNodes;
     while (children.length > 0)
     {
      parg.insertBefore(parg.firstChild);
      parg.removeChild(parg.firstChild);
     };
   };

La línea que supongo que es el problema es la " insertBefore " lógica.

¿Fue útil?

Solución

insertBefore opera en un nodo de elemento y toma dos argumentos, el nuevo nodo y el nodo que el nuevo nodo precederá.

function unwrap(who){
 var pa= who.parentNode;
 while(who.firstChild){
  pa.insertBefore(who.firstChild, who);
 }
}

// prueba

unwrap (document.getElementById (" blah "));

 introduce la descripción de la imagen aquí

Otros consejos

Necesitará recorrer sus hijos de primer nivel y asignar a sus padres al " envoltorio " padre del elemento.

Algo así, quizás:

if ( parg.hasChildNodes() ) {
     var children = parg.childNodes;

     for ( child in children ) {
        child.parentNode = parg.parentNode;
     }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top