当前位置: 首页 > 面试题库 >

JavaScript按ID删除元素

胡俊贤
2023-03-14
问题内容

使用标准JavaScript删除元素时,必须首先转到其父元素:

var element = document.getElementById("element-id");
element.parentNode.removeChild(element);

首先必须去父节点对我来说有点奇怪,JavaScript是否有这样的原因?


问题答案:

我知道,增强本机DOM功能并不总是最好的或最受欢迎的解决方案,但是对于现代浏览器来说,这很好。

Element.prototype.remove = function() {
    this.parentElement.removeChild(this);
}
NodeList.prototype.remove = HTMLCollection.prototype.remove = function() {
    for(var i = this.length - 1; i >= 0; i--) {
        if(this[i] && this[i].parentElement) {
            this[i].parentElement.removeChild(this[i]);
        }
    }
}

然后你可以删除这样的元素

document.getElementById("my-element").remove();

要么

document.getElementsByClassName("my-elements").remove();

注意:此解决方案不适用于IE 7及更低版本。有关扩展DOM的更多信息,请阅读本文。

编辑:回顾我在2019年的答案,node.remove()可以进行救援,并且可以如下使用(没有上面的polyfill):

document.getElementById("my-element").remove();

要么

[...document.getElementsByClassName("my-elements")].map(n => n && n.remove());

这些功能在所有现代浏览器(不是IE)中都可用。阅读有关MDN的更多信息。



 类似资料:
  • 如上图片, 每个方块都有一个宽,高,X轴,Y轴; 有可能宽占多份, 高占多份; 但宽度最大就占3份, 高度不限; 每次删除一个格子, 下面的格子自动往左往上补齐; 给到数据假如是: 删除id为5的格子后,希望得到的是:

  • 问题内容: 比方说: 对此: 我一直在寻找使用Mootools,jQuery甚至是(原始)JavaScript的方法,但是却不知道该怎么做。 问题答案: 使用jQuery,您可以执行以下操作: 快速链接到文档: 内容(): jQuery replaceWith( 内容 :[ 字符串 | 元素 | jQuery ]): jQuery

  • 接手别人的前端代码,发现一个奇怪的问题,用的elementUI组件,排序后点击删除按钮会随机删除,但是打印传入的下标发现又是正确的,只剩一个元素时可以正常删除,可能有哪些原因? 删除函数 排序函数 删除按钮 尝试了防止事件冒泡,重写排序函数,去除删除函数的异步修饰符,对this.addForm.dtlGoods.splice(rowIndex, 1) 加await,但是都不起作用

  • 问题内容: 如何从JavaScript中的数组中删除空元素? 有没有简单的方法,还是我需要遍历它并手动将其删除? 问题答案: 编辑: 大约9年前,当时没有很多有用的内置方法时,就回答了这个问题。 现在,当然,我建议您使用该方法。 请记住,此方法将为您返回 一个新数组, 其中的元素可以通过您提供给它的回调函数的条件。 例如,如果要删除或值: 例如,这将取决于您认为什么是“空”,如果您正在处理字符串,

  • 问题内容: 我是一个新手。有人可以告诉我如何使用原始Javascript(而不是jQuery)删除HTML元素。 当我单击“提交”按钮时,会在很短的时间内消失然后立即出现。单击按钮时,我想完全删除该元素。 问题答案: 发生的情况是正在提交表单,因此页面(带有其原始内容)正在刷新。您正在通过“提交”按钮处理事件。 如果要删除元素 而不 提交表单,请改为处理表单上的事件,然后从处理程序中返回: HTM

  • 问题内容: 我在MySql数据库中有表。这个表有,而且领域。 如何删除某些记录? 现在,我使用以下代码: 但是我不想在删除操作之前进行任何查询。有什么办法吗?我知道,我可以使用,但是我想使用方法。 问题答案: 你可以这样做, 要么 确保作出的生效。