2009-10-23 12 views
5

Sayfada bir kaydırma düğümü öğesini hareket ettirmesi gereken bir komut dosyası yazıyorum. Bunu yaptığımda, daha önce sarılmış çocukları kaldırırım. Bir düğümün çocuklarını nasıl özlerim, böylece bu ana düğümü başka bir yere taşıyabilir miyim?Javascript'te "surroundContents" ı nasıl geri alırsınız?

Böyle bir şey düşünüyordum:

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

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

tahmin ediyorum çizgi olduğunu sorun olduğunu "insertBefore" mantığı.

+0

great question! Sorunu açıkça ifade edersiniz – toddmo

cevap

7

insertBefore bir eleman düğümünde çalışır ve iki argüman, yeni düğüm ve yeni düğüm önce gelecek düğümü alır.

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

// test

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

enter image description here

+0

Bu harika bir çözüm, teşekkürler. – Matrym

0

İlk düzey çocuklarınız üzerinde yineleme yapmanız ve ebeveynlerini "sarıcı" öğesinin üst öğesine atamanız gerekir. belki böyle

şey,:

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

    for (child in children) { 
     child.parentNode = parg.parentNode; 
    } 
} 
İlgili konular