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

时间:2012-05-25 07:19:57

标签: javascript jquery

我使用以下代码在li中附加ul

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);
}

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

while(root.hasChildNodes()){
    root.removeChild('li');
} 

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

root.removeChild(root li);
root.removeChild('#listid li');
root.removeChild('ul li');
...

7 个答案:

答案 0 :(得分:35)

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

添加<li>元素:

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

删除所有<li>元素:

$(root).empty();

删除一个<li>元素:

$("li:eq(3)",$(root)).remove();

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

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

答案 1 :(得分:29)

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

while( root.firstChild ){
  root.removeChild( root.firstChild );
}

jQuery只会让你慢下来。

答案 2 :(得分:14)

document.getElementById(&#34; the_ul_ID&#34;)。innerHTML =&#34;&#34;;

答案 3 :(得分:4)

怎么样?

    var ul = root;
    ul.innerHTML = '';

答案 4 :(得分:2)

$('#button').on('click', function() {
    $(root).empty();
});

答案 5 :(得分:0)

你需要在删除它们之前获取元素,因为本机DOM方法(无论如何大多数)都不能像jQuery方法那样在选择器字符串中传递。

var lis = root.getElementsByTagName("li");

for(var i = 0, il = lis.length;i<il;i++) {
    root.removeChild(lis[i]);
}

答案 6 :(得分:0)

您可以使用replaceChildren()来完成此操作:

root.replaceChildren();