javascript - 删除所有带有 javascript 类的元素

标签 javascript html

我需要删除具有特定类的所有元素。 我搜索并尝试了大部分选项,但无法在 IE11 上运行,我知道 IE 不支持 remove() native Javascript 函数,但支持 removeChild()。 使用 removeChild() 我收到以下消息:“对象不支持属性或方法‘removeChild’”。

html:

<div class "main">
  <div class "contentHolder">
    <div class="contentInfo">some text</div>
    <div class="contentTxt">some text</div>
    <div class="contentTxt2">some text</div>
  </div>
  <div class "contentHolder">
    <div class="contentInfo">some text</div>
    <div class="contentTxt">some text</div>
    <div class="contentTxt2">some text</div>
  </div>
  <div class "contentHolder">
    <div class="contentInfo">some text</div>
    <div class="contentTxt">some text</div>
    <div class="contentTxt2">some text</div>
  </div>
</div>

我想删除所有带有 contentInfo 类的 div 此脚本适用于除 IE11 以外的所有浏览器。我知道这是因为不支持 .remove()。

const elements = document.getElementsByClassName('contentInfo');
while (elements.length > 0) elements[0].remove();

所以我试过了,但它只适用于第一个 contentHolder。

var i;
for (i = 0; i < elements.length; i++) {         
  elements[i].parentNode.removeChild(elements[i]);             
}

我不明白的另一件事是:为什么下面的行在使用 .remove() 时有效?我用它来删除菜单的一个类。

menu.classList.remove('desactive');

最佳答案

使用这个 polyfill

(function (arr) {
  arr.forEach(function (item) {
    if (item.hasOwnProperty('remove')) {
      return;
    }
    Object.defineProperty(item, 'remove', {
      configurable: true,
      enumerable: true,
      writable: true,
      value: function remove() {
        this.parentNode.removeChild(this);
      }
    });
  });
})([Element.prototype, CharacterData.prototype, DocumentType.prototype]);

更多详情 herehere (MDN)

关于javascript - 删除所有带有 javascript 类的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48497390/

相关文章:

javascript - 对象属性更改时模板不刷新(Ember 2)

css - Div 不显示其下的任何元素

html - 如何创建这个简单的布局?

html css layout zoom 剧变

html - http 和 https 之间的 CSS 样式差异

javascript - Chrome 扩展程序注入(inject)当前标签页

javascript - 如果为空或使用ajax添加带值的逗号,如何将值附加到输入?

javascript - 单元测试中如何判断OnsenUI组件是否编译

javascript - 对 Angular 和 rails 一起布线感到困惑

javascript - 使用常规 javascript 检测 Jquery,如果不存在则动态加载它