【发布时间】:2018-02-21 14:55:16
【问题描述】:
我想在<li> 中创建的复选框中添加一个事件侦听器
触发事件时,我想检查它是选中还是未选中
据我了解,复选框的事件是“onChange”并且该属性已“选中”,但我的解决方案不起作用。
有人可以向我解释为什么这个解决方案不起作用吗? JavaScript 新手,请以最简单的方式解释。 请只使用 JavaScript 提前谢谢你
HTML
<body>
<div class="wrapper">
<ul id="taskList">
</ul>
<div id="add-task-area">
<input type="text" id="addTaskInput" value="">
<button id="addTaskButton">Add Task</button>
</div>
</div>
</body>
JAVASCRIPT
let taskList = document.querySelector("#taskList");
const addTaskInput = document.querySelector("#addTaskInput");
const addTaskButton = document.querySelector("#addTaskButton");
const addTask = () => {
if (addTaskInput.value != " ") {
let taskItem = document.createElement("li");
let taskText = document.createElement("span");
taskText.textContent = addTaskInput.value;
let checkBox = document.createElement("input");
checkBox.setAttribute("type", "checkBox");
checkBox.setAttribute("class", "checkbox");
let removeItem = document.createElement("button");
removeItem.setAttribute("class", "remove");
removeItem.textContent = "Delete";
taskList.appendChild(taskItem);
taskItem.appendChild(taskText);
taskItem.appendChild(checkBox);
taskItem.appendChild(removeItem);
addTaskInput.value = " ";
};
}
addTaskButton.addEventListener("click", addTask);
addTaskInput.addEventListener("keydown", (event) => {
if (event.keyCode == 13) {
addTask();
}});
let checkbox = document.querySelectorAll(".checkbox")
checkbox.addEventListener("onChange", test);
const test = () => {
if (checkbox.checked) {
alert("checked");
} else {
alert ("unchecked")
}
}
【问题讨论】:
-
.querySelectorAll()返回一个列表,而该列表没有.addEventListener()方法。试试.querySelector(),它返回第一个匹配元素而不是列表。 (或者,如果可能有多个复选框,您需要遍历列表以向列表中的每个元素添加一个侦听器。)请参阅 this question 或 this question。
标签: javascript checkbox onchange addeventlistener