JavaScript删除所有名为的元素

JavaScript删除所有名为的元素,javascript,Javascript,我试图使用JavaScript删除所有具有特定名称的元素,但它只是删除了第一个元素 我的代码是: var ele= document.getElementsByName("javascriptaudio"); for(var i=0;i<ele.length;i++) { ele[i].parentNode.removeChild(ele[i]); } $("[name=javascriptaudio]").remove(); var ele=document.getElement

我试图使用JavaScript删除所有具有特定名称的元素,但它只是删除了第一个元素

我的代码是:

var ele= document.getElementsByName("javascriptaudio");
for(var i=0;i<ele.length;i++)
{
  ele[i].parentNode.removeChild(ele[i]);
}
$("[name=javascriptaudio]").remove();
var ele=document.getElementsByName(“javascriptaudio”);

对于(var i=0;i请尝试以下jQuery代码:

var ele= document.getElementsByName("javascriptaudio");
for(var i=0;i<ele.length;i++)
{
  ele[i].parentNode.removeChild(ele[i]);
}
$("[name=javascriptaudio]").remove();

尝试向后删除它们:

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。

我没有足够的代表对Álvaro G.Vicario进行评论。它起作用的原因是,当元素从DOM中删除时,它从元素中删除。奇怪

以下代码应该同样有效:

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”);
len=ele.长度;
parentNode=ele[0]。parentNode;

对于(var i=0;i您需要在循环外保存数组的长度,因为如果您将数组放在循环条件内,它将在每次传递时进行计算。这样您将有正确的迭代次数。此外,您每次都需要删除循环中的第一项,因为每次传递都会丢失1项,因此在过程结束时您将超出范围

var ele = document.getElementsByName("javascriptaudio");
var elementsCount = ele.length;
for(var i=0;i<ele.length;i++){
    ele[0].parentNode.removeChild(ele[0]);
}
var ele=document.getElementsByName(“javascriptaudio”);
var elementscont=元素长度;

对于(VarI=0;iWho说jQuery是可用的?应该是(体面的)评论。这个答案是正确的,但是可以使用一些解释来帮助OP和未来的读者知道为什么。你是对的,恐怕我只在输入代码时就被邀请去吃午餐。我已经编辑了我的答案。哦,使用现场收藏品工作的美丽。试着删除后面。考虑使用某种JS框架来摆脱那个锅炉。plate(可能有bug!)代码。例如,在jQuery中,这只是
$(“[name=javascriptaudio]”)。remove()
@karoly另一种选择是更好地理解正在发生的事情,然后据此进行编码。相信我,这样做更令人满意,而且生成的代码依赖性也更少。@JanDvorak:相信你,lol。抽象就是为了不担心这些细节。如果我阅读代码,我希望看到描述所发生的事情的高级函数完成了,不是勇气,一个血腥的循环……如果你想知道更多,那很好(甚至可能让你满意)。如果你构建了一个框架/库,你应该这样做。但是如果你是一个普通的开发人员,这是我能给你的最好建议。每一个有自尊心的开发人员都会乐于引入某种依赖性来摆脱这种锅炉板代码。在JavaScript中,对象总是通过引用传递的。删除一个元素会从任何地方删除它E:)