Javascript 如何删除所有<;李>;带innerHTML==”的&“;;
我的html代码Javascript 如何删除所有<;李>;带innerHTML==”的&“;;,javascript,Javascript,我的html代码 <ul id = "1"> <li>elti</li> <li></li> <li></li> <li></li> </ul> 埃尔蒂 要删除空li,我使用以下javascript代码: var y = document.getElementById("1"); x = y.getElementsByTagName("li"); for( i
<ul id = "1">
<li>elti</li>
<li></li>
<li></li>
<li></li>
</ul>
- 埃尔蒂
要删除空li,我使用以下javascript代码:
var y = document.getElementById("1");
x = y.getElementsByTagName("li");
for( i = 0; i < x.length ; i++) {
if (x[i].innerHTML === "" ){
y.removeChild(x[i]);
}
}
var y=document.getElementById(“1”);
x=y.getElementsByTagName(“li”);
对于(i=0;i
但结果是:
<li>elti</li>
<li></li>
elti
正如您所看到的,它不会删除li标记。我做错了什么?反向工作;否则,删除项目时,将跳过对列表中下一个项目的检查:
for( i = x.length - 1; i >= 0; i--) {
if (x[i].innerHTML === "" ){
y.removeChild(x[i]);
}
}
var y=document.getElementById(“1”);
x=y.getElementsByTagName(“li”);
对于(i=x.length-1;i>=0;i--){
如果(x[i].innerHTML==“”){
y、 removeChild(x[i]);
}
}
- 埃尔蒂
当您从中删除元素时,您的x
将不断变化。经过几次迭代后,x[i]
将不再是您认为的那样。ID属性必须以字母()开头@jeff数字ID在HTML 5中有效+1这是因为当您删除一个元素时,所有索引都会向左移动1,但是您的i
迭代变量不能解释它。这是正确的。当他删除一个元素时,他也可以减少他的索引y.removeChild(x[i--])代码>