我正在尝试使用 JavaScript 制作一个简单的待办事项列表。基本上,您在输入字段中输入一个项目,它会被添加到列表中,如果它已完成则单击它,然后它就会被划掉。如果您单击已被划掉的列表,则会删除该行。但是,虽然删除一条线有效,但添加一条线是行不通的。
HTML:
<div><input type="text" value="" id="new_task"><button id="add_task">Add Task</button></div>
<ul id="tasks">
<li class="completed selected">One Task</li>
<li>Two Task</li>
</ul>
CSS:
<style type="text/css" media="screen">
/*local styles if any (quick tests and local only overrides)*/
#tasks li{
list-style: none;
}
#tasks .selected{
list-style: disc;
}
.completed{
text-decoration: line-through;
}
</style>
脚本:
<script type="text/javascript" charset="utf-8">
var inputField = document.querySelector("#new_task");
var myButton = document.querySelector("#add_task");
var taskList = document.querySelector("#tasks");
var newList = document.createElement("li");
var completeTask = document.querySelector("li.completed.selected");
var incompleteTask = document.querySelector("li:not([class])");
myButton.onclick = function() {
taskList.appendChild(newList);
newList.innerHTML = inputField.value;
inputField.value = "";
}
completeTask.onclick = function() {
event.target.classList.remove("completed","selected");
}
incompleteTask.onclick = function() {
event.target.classList.add("completed","selected");
}
</script>
原文由 Jaeeun Lee 发布,翻译遵循 CC BY-SA 4.0 许可协议
该脚本仅解析文档一次并
document.querySelector("li.completed.selected")
返回一个节点。因此,删除这些类仅适用于在解析脚本时具有这些类的 One Task 。您需要手动将
onclick
处理程序添加到创建的每个项目,请参阅 jsFiddle 。