首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在javascript中按属性删除对象

在javascript中按属性删除对象
EN

Stack Overflow用户
提问于 2014-01-23 22:28:11
回答 3查看 130关注 0票数 0

我在同一页上有几个不同的表,但不幸的是,它们没有被分配给任何唯一的id。我想使用JS命令删除一个表,但是由于id不能使用,所以可以根据它具有的某个属性删除一个表吗?例如,是否有命令删除页面上具有属性: width="25%“的所有表?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-23 22:41:34

我知道这已经有了一些解决方案,但我会提供另一种选择。

代码语言:javascript
代码运行次数:0
运行
复制
var tables = document.getElementsByTagName('table');
for(var i = 0; i < tables.length; i++){
    if(tables[i].getAttribute('width') == "25%"){
        tables[i].parentNode.removeChild(tables[i]);
    }
}

http://codepen.io/michaelehead/pen/HfdKx的演示。

票数 2
EN

Stack Overflow用户

发布于 2014-01-23 22:34:44

您可以使用querySelectorAll来完成这一任务。

代码语言:javascript
代码运行次数:0
运行
复制
var x = document.querySelectorAll("table[width='25%']");
for (var i=0; i<x.length; i++) { //returns array of elements that match the attribute selector
    x[i].remove(); //call prototype method defined below
}

删除是很棘手的,我发现这段代码生成了一个很好的删除方法。

代码语言:javascript
代码运行次数:0
运行
复制
Element.prototype.remove = function() {
    this.parentElement.removeChild(this);
}
NodeList.prototype.remove = HTMLCollection.prototype.remove = function() {
    for(var i = 0, len = this.length; i < len; i++) {
        if(this[i] && this[i].parentElement) {
            this[i].parentElement.removeChild(this[i]);
        }
    }
}

这将创建一个原型remove()函数,该函数迭代节点并删除子节点。

请注意,querySelectorAll不会在IE8或更低的地方工作,但是prototype方法的海报上说它应该在IE8中工作,而不是7。

票数 4
EN

Stack Overflow用户

发布于 2014-01-23 22:36:23

是的你可以。最简单的方法是使用JQuery。在您的javascript代码中,您只需编写:

代码语言:javascript
代码运行次数:0
运行
复制
$("[attribute=value]").remove()

所以在你的例子中,它可能类似于$("table[width='25%']").remove()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21320646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档