كيف يمكنك التراجع عن "surroundContents" في جافا سكريبت؟

StackOverflow https://stackoverflow.com/questions/1614658

  •  06-07-2019
  •  | 
  •  

سؤال

وأنا أكتب السيناريو الذي يحتاج إلى نقل عنصر العقدة التفاف حول على الصفحة. أجد أنه عندما أفعل هذا، وأنا إزالة أطفال ملفوفة في السابق. كيف يمكنني unnest أطفال عقدة، حتى أستطيع أن نقل تلك العقدة الأصل في مكان آخر؟

وكنت أفكر في شيء مثل هذا:

  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 تعمل على عقدة عنصر ويأخذ حجتين، عقدة جديدة، وعقدة وعقدة جديدة تسبق.

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

و// اختبار

وبسط (document.getElementById ( "بلاه"))؛

نصائح أخرى

وستحتاج إلى تكرار عبر الأطفال من المستوى الأول وتعيين والدهم إلى "المجمع" الأم العنصر.

وشيء من هذا القبيل، وربما:

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

     for ( child in children ) {
        child.parentNode = parg.parentNode;
     }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top