如何删除所有<li> with innerHTML = =&#34;&#34;; </li>

时间:2014-10-29 20:27:33

标签: javascript

我的HTML代码

<ul id = "1">
<li>elti</li>
<li></li>
<li></li>
<li></li>
</ul>

使用以下javascript代码删除空li:

var y = document.getElementById("1");
x = y.getElementsByTagName("li");


for( i = 0; i < x.length ; i++) {
    if (x[i].innerHTML === "" ){
        y.removeChild(x[i]);
        }
}

但输出是这样的:

<li>elti</li>
<li></li>

你可以看到它没有删除li标签。我做错了什么?

1 个答案:

答案 0 :(得分:4)

反向工作;否则,当您删除项目时,您将跳过检查列表中下一项:

for( i = x.length - 1; i >= 0; i--) {
  if (x[i].innerHTML === "" ){
    y.removeChild(x[i]);
  }
}

&#13;
&#13;
var y = document.getElementById("1");
x = y.getElementsByTagName("li");


for( i = x.length - 1; i >= 0; i--) {
  if (x[i].innerHTML === "" ){
    y.removeChild(x[i]);
  }
}
&#13;
<ul id = "1">
  <li>elti</li>
  <li></li>
  <li></li>
  <li></li>
</ul>
&#13;
&#13;
&#13;