44

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');
...
4

7 回答 7

58

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

添加<li>元素:

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

删除所有<li>元素:

$(root).empty();

删除一个<li>元素:

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

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

document.getElementById("root").innerHTML = "";
于 2012-05-25T07:23:36.807 回答
39

您似乎正在尝试使用原始 JavaScript:

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

jQuery 只会让你慢下来。

于 2012-05-25T07:23:54.080 回答
27
document.getElementById("the_ul_ID").innerHTML = "";
于 2014-12-05T21:15:38.810 回答
8

关于什么?

    var ul = root;
    ul.innerHTML = '';
于 2017-01-23T08:52:53.303 回答
2
$('#button').on('click', function() {
    $(root).empty();
});
于 2012-05-25T07:20:48.870 回答
0

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

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

for(var i = 0, il = lis.length;i<il;i++) {
    root.removeChild(lis[i]);
}
于 2012-05-25T07:27:40.383 回答
0

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

root.replaceChildren();
于 2020-12-14T03:26:09.380 回答