Frage

Ich schreibe ein Skript, das ein Wickelknotenelement um auf der Seite bewegen muss. Ich finde, dass, wenn ich das tue, habe ich die vorher eingewickelt Kinder entfernen. Wie UNNEST ich die Kinder eines Knotens, so dass ich an anderer Stelle, dass die übergeordneten Knoten bewegen kann?

Ich dachte so etwas wie folgt aus:

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

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

Die Linie, die ich vermute, das Problem der „insert“ Logik ist.

War es hilfreich?

Lösung

insert arbeitet auf einem Elementknoten und nimmt zwei Argumente, der neue Knoten und der Knoten der neue Knoten eingefügt werden soll.

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

// test

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

 image description hier

Andere Tipps

Sie müssen über Ihre erste Ebene Kinder iterieren und ihre Eltern auf den „Wrapper“ geordneten Elemente zuweisen.

So etwas, vielleicht:

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

     for ( child in children ) {
        child.parentNode = parg.parentNode;
     }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top