除了首先使用javascript删除子节点

1 javascript

我想删除li除第一个孩子之外的所有内容此代码正在删除所有li..

function clearAll() {
    var sidemenu = document.getElementById('side_menu');
    while (sidemenu.childNodes.length > 1) {
            sidemenu.removeChild(sidemenu.lastChild);
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么建议吗?

Anb*_*san 5

使用sidemenu.children代替sidemenu.childNodes

sidemenu.children 将只返回给定节点下的元素。

sidemenu.childNodes将同时返回元素和文本节点,这不是您需要的项目列表。如果您检查lastChild它返回的值,它将是一个空文本节点,而不是一个li. 这就是为什么所有的li都被移除了。

function clearAll() {
    var sidemenu = document.getElementById('side_menu');
    while (sidemenu.children.length > 1) {
        sidemenu.removeChild(sidemenu.lastChild);
    }
}
Run Code Online (Sandbox Code Playgroud)