6

ページ上でラッピング ノード要素を移動する必要があるスクリプトを作成しています。これを行うと、以前にラップされた子を削除することがわかりました。親ノードを別の場所に移動できるように、ノードの子のネストを解除するにはどうすればよいですか?

私は次のようなことを考えていました:

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

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

私が推測している行は、「insertBefore」ロジックが問題です。

4

2 に答える 2

8

insertBefore は要素ノードで動作し、新しいノードと新しいノードが先行するノードの 2 つの引数を取ります。

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

//テスト

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

ここに画像の説明を入力

于 2009-10-23T17:34:59.303 に答える
0

第 1 レベルの子を繰り返し処理し、その親を「ラッパー」要素の親に割り当てる必要があります。

おそらく、次のようなものです。

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

     for ( child in children ) {
        child.parentNode = parg.parentNode;
     }
}
于 2009-10-23T17:19:40.367 に答える