我正在尝试使用JavaScript删除所有具有特定名称的元素,但它仅删除第一个。
我的代码如下:
var ele= document.getElementsByName("javascriptaudio");
for(var i=0;i<ele.length;i++)
{
ele[i].parentNode.removeChild(ele[i]);
}
请问有人可以告诉我出了什么问题吗?
谢谢。
我正在尝试使用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。你需要在循环外保存数组的长度,因为如果你把它放在循环条件里面,它会在每次循环中被重新计算。这样,你就可以得到正确的迭代次数。此外,你还需要每次循环删除第一个项目,因为每次循环都会失去一个项目,所以在处理结束时你将超出范围。
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();
$("[name=javascriptaudio]").remove();
。 - Karoly Horvath