我在同一页上有几个不同的表,但不幸的是,它们没有被分配给任何唯一的id。我想使用JS命令删除一个表,但是由于id不能使用,所以可以根据它具有的某个属性删除一个表吗?例如,是否有命令删除页面上具有属性: width="25%“的所有表?
发布于 2014-01-23 14:41:34
我知道这已经有了一些解决方案,但我会提供另一种选择。
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]);
}
}
发布于 2014-01-23 14:34:44
您可以使用querySelectorAll
来完成这一任务。
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
}
删除是很棘手的,我发现这段代码生成了一个很好的删除方法。
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。
发布于 2014-01-23 14:36:23
是的你可以。最简单的方法是使用JQuery。在您的javascript代码中,您只需编写:
$("[attribute=value]").remove()
所以在你的例子中,它可能类似于$("table[width='25%']").remove()
https://stackoverflow.com/questions/21320646
复制相似问题