从<ul>中删除所有<li>?

unk*_*own 28 javascript jquery

liul使用以下代码附加:

for (var i = 1; i <= len; i++) {
    li = document.createElement('li');

    element = document.createElement("img");
    element.setAttribute("src", path[i]);

    li.appendChild(element);
    root.appendChild(li);
}
Run Code Online (Sandbox Code Playgroud)

现在,我想通过单击按钮从列表中删除所有项目.这就是我正在使用的,这是行不通的:

while(root.hasChildNodes()){
    root.removeChild('li');
} 
Run Code Online (Sandbox Code Playgroud)

条件为真,但内线root.removeChild('li')不起作用.我也试过这些选项:

root.removeChild(root li);
root.removeChild('#listid li');
root.removeChild('ul li');
...
Run Code Online (Sandbox Code Playgroud)

Tah*_*ksu 43

如果您使用的是jQuery,为什么不使用它的好处呢?

添加<li>元素:

$("<li><img src='"+path[i]+"'></li>").appendTo(root);
Run Code Online (Sandbox Code Playgroud)

删除所有<li>元素:

$(root).empty();
Run Code Online (Sandbox Code Playgroud)

删除一个<li>元素:

$("li:eq(3)",$(root)).remove();
Run Code Online (Sandbox Code Playgroud)

如果您使用原始js,您可以使用:

document.getElementById("root").innerHTML = "";
Run Code Online (Sandbox Code Playgroud)

  • 您可以在http://www.jquery.com找到示例和完整的功能列表.尝试这些示例并使用这些功能来了解他们的工作. (2认同)

Sam*_*son 32

您似乎是使用原始JavaScript尝试此操作:

while( root.firstChild ){
  root.removeChild( root.firstChild );
}
Run Code Online (Sandbox Code Playgroud)

jQuery只会让你慢下来.

  • @tpaksu不必要的传递jQuery是*不必要的*.这里有一些吸引眼球:http://jsperf.com/listitem-removal (3认同)
  • 慢一点?他是在谈论10k的李元素吗? (2认同)
  • @tpaksu当以这种方式与`innerHTML`方法交互时,某些版本的IE不能很好地发挥作用.据我所知,`firstChild`删除工作是全面的. (2认同)
  • @tpaksu这绝不是关于速度的.当我说jQuery会减慢他的速度时,我并不是指浏览器性能.我指的是没有任何理由通过jQuery来完成一个简单的JavaScript任务.关于`innerHTML`,这也不是一个perf问题,因为它是一个compat问题.不同的浏览器(过去)以不同的方式对该成员进行操作. (2认同)
  • @tpaksu jQuery在你使用它时处理compat问题.`elem.innerHTML`不使用jQuery,`$ .html()`. (2认同)

Sea*_*ton 16

document.getElementById("the_ul_ID").innerHTML ="";


Ник*_*кин 7

关于什么?

    var ul = root;
    ul.innerHTML = '';
Run Code Online (Sandbox Code Playgroud)