Как вы отменяете "roundContents "в JavaScript? - PullRequest
6 голосов
/ 23 октября 2009

Я пишу сценарий, который должен перемещать элемент обтекания по странице. Я обнаружил, что когда я делаю это, я удаляю ранее завернутых детей. Как отменить вложенность дочерних узлов, чтобы переместить этот родительский узел в другое место?

Я думал примерно так:

  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".

Ответы [ 2 ]

8 голосов
/ 23 октября 2009

insertBefore работает на узле элемента и принимает два аргумента, новый узел и узел, которому будет предшествовать новый узел.

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

// тест

разворачивать (document.getElementById ( "бла"));

enter image description here

0 голосов
/ 23 октября 2009

Вам нужно будет выполнить итерации по дочерним элементам первого уровня и назначить их родителя для родительского элемента "wrapper".

Что-то вроде этого, возможно:

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

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