Pergunta

Eu estou escrevendo um script que precisa para mover um elemento de nó envolvendo em torno da página. Acho que quando eu faço isso, eu remover as crianças previamente embrulhados. Como eu unnest os filhos de um nó, para que eu possa mover esse nó pai em outro lugar?

Eu estava pensando algo como isto:

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

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

A linha que eu estou supondo que é o problema é a lógica "insertBefore".

Foi útil?

Solução

insertBefore opera em um nó de elemento e leva dois argumentos, o novo nó eo nó no novo nó irá anteceder.

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

// test

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

 enter descrição da imagem aqui

Outras dicas

Você vai precisar iterar sobre seus primeiro nível crianças e atribuir o seu pai para o "wrapper" pai do elemento.

Algo como isto, talvez:

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

     for ( child in children ) {
        child.parentNode = parg.parentNode;
     }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top