微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法从ul中删除多个li

如何解决无法从ul中删除多个li

我正在创建课程的待办事项列表:

实验4:待办事项列表让我们创建一个简单的待办事项列表,它支持 以下操作:将项目添加到列表中 列表将项目标记为已完成删除的项目应消失 完全。完成的项目应显示底部(或 单独的列表),并在其中一行。

我无法从我的ul中删除多个li。删除一个错误消息。

lab-04.js:16未捕获的DOMException:无法在以下位置执行“ removeChild” “节点”:要删除的节点不是该节点的子节点。在 HTMLButtonElement.removeBtn.onclick (http://127.0.0.1:5500/js/lab-04/lab-04.js:16:18

奇怪的是,足够多的按钮被删除了,而不必大惊小怪。

代码(js):

let manipulateDom = () => {
    let container = document.getElementsByClassName('container')
    let todoList = document.getElementById('to-do')
    let removeBtn = document.createElement('button')

    content = document.getElementById('userInput').value
    listItem = document.createElement('li')
    listItem.className = 'list-item'
    listItem.textContent = (content)

    removeBtn.appendChild(document.createTextNode('remove'))

    removeBtn.onclick = function() {
        todoList.removeChild(removeBtn)
        
        todoList.removeChild(listItem)
    
    }


    

    todoList.appendChild(listItem)
    todoList.appendChild(removeBtn)

    
}

(html):

<!DOCTYPE html>
<html lang="en">
<head>
    <Meta charset="UTF-8">
    <Meta name="viewport" content="width=device-width,initial-scale=1.0">
    <title>lab-04</title>
    <script src='/js/lab-04/lab-04.js'></script>
</head>
<body>
    <h4>To Do List</h4>
    <input type='text' id='userInput' placeholder="item to add">
    <input type="submit" onclick="manipulateDom()">

    <ul id='to-do'>
    </ul>

    <ul id='done'>
    </ul>
</body>
</html>

非常感谢您的帮助,随时准备把我的头发拔掉

解决方法

您将listItem放在window范围内,而removeBtn.onclick所做的就是删除listItem范围内的window,这就是为什么删除按钮只能使用一次,并且只能在创建的最后一个元素上使用。

在块范围内声明listItem,它应该可以重新工作

let manipulateDom = () => {
    let container = document.getElementsByClassName('container');
    let toDoList = document.getElementById('to-do');
    let removeBtn = document.createElement('button');

    let content = document.getElementById('userInput').value;
    let listItem = document.createElement('li');
    
    listItem.className = 'list-item';
    listItem.textContent = (content);

    removeBtn.appendChild(document.createTextNode('remove'))

    removeBtn.onclick = function() {
        toDoList.removeChild(removeBtn);
        toDoList.removeChild(listItem);
    };

    toDoList.appendChild(listItem);
    toDoList.appendChild(removeBtn);
}
<h4>To Do List</h4>
<input type='text' id='userInput' placeholder="item to add">
<input type="submit" onclick="manipulateDom()">

<ul id='to-do'>
</ul>

<ul id='done'>
</ul>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?