删除div而不删除普通Javascript中的内容

时间:2017-07-06 04:38:27

标签: javascript jquery html dom

在没有删除div中的内容的情况下,有人可以帮助我删除JavaScript代码吗?

这是我需要删除所有div标签的html:

<div id="id1" class="someclass">
  <p>some text
    <label> Test content </label>
  </p>
  <div id="id2" style="overfolw:scroll">
    <span>some text</span>
    <div id="level3">
      <label> Test content </label>
      <a href="https://twitter.com/realDonaldTrump/status/882186896285282304" target=_blank rel=noopener>creepiness</a>
    </div>
  </div>
</div>

预期输出如下所示。

<p>some text
   <label> Test content </label>
</p>
<span>some text</span>
<label> Test content </label>
<a href=https://twitter.com/realDonaldTrump/status/882186896285282304 target=_blank rel=noopener>creepiness</a>

3 个答案:

答案 0 :(得分:11)

1.使用纯java脚本: -

&#13;
&#13;
JsonObjectRequest
&#13;
var divs=document.getElementsByTagName('div');
var counter = divs.length-1;
for(i=counter;i>=0;i--){
 divs[i].outerHTML = divs[i].innerHTML;
}
&#13;
&#13;
&#13;

2.您可以使用jQuery unwrap() : -

&#13;
&#13;
<div id="id1" class="someclass">
  <p>some text
    <label> Test content </label>
  </p>
  <div id="id2" style="overfolw:scroll">
    <span>some text</span>
    <div id="level3">
      <label> Test content </label>
      <a href="https://twitter.com/realDonaldTrump/status/882186896285282304" target=_blank rel=noopener>creepiness</a>
    </div>
  </div>
</div>
&#13;
$(document).ready(function(){
  $('div').contents().unwrap();
});
&#13;
&#13;
&#13;

答案 1 :(得分:4)

使用iterable nodelistsreplaceWith这样的尖端技术,使用普通的DOM API非常简单:

for (const div of document.querySelectorAll("div"))
// alternatively: Array.from(document.getElementsByTagName("div"))
    div.replaceWith(...div.childNodes);

答案 2 :(得分:3)

您可以使用unwrap功能。

 $('div').children().unwrap();

如果你想用普通的javascript做。您可以使用document.getElementsByTagName("div")获取所有div的列表,但是您需要以相反的顺序打开这些div。这是一个nodelist,因此reverse()无法使用它,因此您可以先在其上使用[].slice.call(),它会为您提供一个数组,然后您可以将其反转。然后在数组中展开每个元素。

你可以这样做:

&#13;
&#13;
var elements = [].slice.call(document.getElementsByTagName("div"), 0).reverse();
elements.forEach(function(el){
    el.outerHTML = el.innerHTML;
});
&#13;
<div id="id1" class="someclass">
  <p>some text
    <label> Test content </label>
  </p>
  <div id="id2" style="overfolw:scroll">
    <span>some text</span>
    <div id="level3">
      <label> Test content </label>
      <a href="https://twitter.com/realDonaldTrump/status/882186896285282304" target=_blank rel=noopener>creepiness</a>
    </div>
  </div>
</div>
&#13;
&#13;
&#13;