我在页面上有100个跨度,并且使用javascript我想删除所有这些:
function removeElements(){
var elementss = document.getElementsByTagName('span');
for(var i=0; i<elementss.length; i++){
elementss[i].remove();
}
}
假设我有10个跨度
1,2,3,4,5,6,7,8,9,10
当我点击删除按钮时,我得到了这个:
2,4,6,8,10
如果我想更改innetHTML或值或其他东西,但是对于remove()它不起作用,它可以工作....
答案 0 :(得分:2)
当你删除第一个元素时,原来的第二个元素是第一个元素,第三个元素是第二个元素,依此类推。
为了删除所有元素,
for(var i=elementss.length - 1; i >= 0; i--){
elementss[i].remove();
}
这将在不改变原始顺序的情况下向后移除元素。
答案 1 :(得分:1)
由于getElementsByTagName
返回live elements collection(HTMLCollection
),因此当您删除元素时它将自动更新,因此它将跳过某些元素,因为元素位置正在更新。
因此,请以相反的顺序删除元素,以避免以最简单的方式跳过元素。
var i = elementss.length;
while(i--){
elementss[i].remove();
}
对于IE支持,请使用removeChild()
方法。
var i = elementss.length;
while(i--){
elementss[i].parentNode.removeChild(elementss[i]);
}