2009-10-23 10 views
5

Ich schreibe ein Skript, das ein umhüllendes Knotenelement auf der Seite verschieben muss. Ich finde, wenn ich das mache, entferne ich die vorher eingewickelten Kinder. Wie erniere ich die untergeordneten Elemente eines Knotens, sodass ich diesen übergeordneten Knoten an anderer Stelle verschieben kann?Wie rückgängig machen Sie "surroundContents" in Javascript?

Ich war so etwas wie dieses Denken:

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 ist die „insert“ Logik.

+0

große Frage! Sie äußern das Problem wirklich deutlich – toddmo

Antwort

7

insert arbeitet auf einem Elementknoten und zwei Argumente, den neuen Knoten und den 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 ("bla"));

enter image description here

+0

Dies ist eine fantastische Lösung, danke. – Matrym

0

Sie müssen über die untergeordneten Elemente der ersten Ebene iterieren und ihre Eltern dem übergeordneten Element "wrapper" zuweisen.

Etwas Ähnliches, vielleicht:

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

    for (child in children) { 
     child.parentNode = parg.parentNode; 
    } 
} 
Verwandte Themen