繁体   English   中英

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM