質問

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

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

  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」です。ロジック。

役に立ちましたか?

解決

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

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

// test

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

ここに画像の説明を入力

他のヒント

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

次のようなもの、おそらく:

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

     for ( child in children ) {
        child.parentNode = parg.parentNode;
     }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top