Javascript 如何删除所有<;李>;带innerHTML==”的&“;;

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

我的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 = 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--])