Domanda

Sto scrivendo uno script che deve spostare un elemento del nodo avvolgente nella pagina. Trovo che quando faccio questo, rimuovo i bambini precedentemente avvolti. Come faccio a annullare la query dei figli di un nodo, in modo da poter spostare quel nodo padre altrove?

Stavo pensando a qualcosa del genere:

  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 linea che suppongo sia il problema è il messaggio "insertBefore" logica.

È stato utile?

Soluzione

insertBefore opera su un nodo elemento e accetta due argomenti, il nuovo nodo e il nodo che precederà il nuovo nodo.

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

// test

decifratura (document.getElementById (" bla "));

 inserisci qui la descrizione dell'immagine

Altri suggerimenti

Dovrai iterare sui tuoi figli di primo livello e assegnare i loro genitori al "wrapper" genitore dell'elemento.

Qualcosa del genere, forse:

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

     for ( child in children ) {
        child.parentNode = parg.parentNode;
     }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top