![](/img/trans.png)
[英]Remove all the DOM elements with a specific tag name in Javascript
[英]JavaScript remove all elements with name
我正在尝试使用 JavaScript 删除具有证书名称的所有元素,但它只是删除了第一个。
我的代码是:
var ele= document.getElementsByName("javascriptaudio");
for(var i=0;i<ele.length;i++)
{
ele[i].parentNode.removeChild(ele[i]);
}
谁能告诉我出了什么问题?
谢谢
我没有足够的代表来评论 Álvaro G. Vicario。 它起作用的原因是当元素从 DOM 中移除时,元素也会从 ele 中移除。 奇怪的。
以下代码应该同样有效:
var ele= document.getElementsByName("javascriptaudio");
len = ele.length;
parentNode = ele[0].parentNode;
for(var i=0; i<len; i++)
{
parentNode.removeChild(ele[0]);
}
尝试向后删除它们:
var ele = document.getElementsByName("javascriptaudio");
for(var i=ele.length-1;i>=0;i--)
{
ele[i].parentNode.removeChild(ele[i]);
}
问题是从ele
中删除元素会移动索引:如果您有 5 个项目(0 到 4)并删除项目 0,那么您将有 4 个项目,范围从 0 到 3(4 变为 3,3 变为 2,等等); 然后你应该删除项目 0 但你的i
变量已经增加到 1。
您需要在循环外保存数组的长度,因为如果将其放置在循环标准内,则每次传递都会对其进行评估。 这样你就会有正确的迭代次数。 此外,您每次都需要删除循环中的第一个项目,因为每次通过都会丢失 1 个项目,因此在流程结束时您将超出范围。
var ele = document.getElementsByName("javascriptaudio");
var elementsCount = ele.length;
for(var i=0;i<ele.length;i++){
ele[0].parentNode.removeChild(ele[0]);
}
尝试以下 jQuery 代码:
$("[name=javascriptaudio]").remove();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.