我正在处理一个简单的待办事项列表,我尝试将待办事项(即任务)与复选框链接起来,因此当我单击任务时,也应该选中该复选框。
但是我不想制作一个标签并赋予它“for”属性,我想通过JavaScript而不是Html来制作它。
这可能吗?!!
我尝试过如下操作:
let box = document.createElement("input")
box.setAttribute("type", "checkbox")
box.id = "box"
let label = document.createElement("label")
label.setAttribute("for", "box")
但它不适用于其余代码,因为当我单击页面中的任何标签时,它只检查一个复选框。
是的,可以使用 JavaScript 将任务(文本)与复选框链接起来,而无需使用 label 元素。您可以通过向任务添加事件侦听器来实现此目的,该事件侦听器在单击时检查相应的复选框。这是一个简单的例子来说明这一点:
<!DOCTYPE html>
<html>
<head>
<title>Todo List</title>
</head>
<body>
<div id="todo-list"></div>
<script>
// Function to create a new todo item
function createTodoItem(taskText) {
// Create a container div for the task and checkbox
let container = document.createElement("div");
// Create the checkbox
let checkbox = document.createElement("input");
checkbox.type = "checkbox";
checkbox.id = "box-" + taskText;
// Create the task (text)
let task = document.createElement("span");
task.textContent = taskText;
task.style.cursor = "pointer";
// Add event listener to the task
task.addEventListener("click", function() {
checkbox.checked = !checkbox.checked;
});
// Append the checkbox and task to the container
container.appendChild(checkbox);
container.appendChild(task);
// Append the container to the todo list
document.getElementById("todo-list").appendChild(container);
}
// Example usage
createTodoItem("Buy groceries");
createTodoItem("Walk the dog");
createTodoItem("Finish homework");
</script>
</body>
</html>
在此示例中:
创建一个 div 元素作为每个任务及其复选框的容器。 创建复选框输入元素并将其添加到容器中。 创建一个 span 元素来保存任务文本。该跨度被赋予一个单击事件监听器,单击时该监听器会切换相应复选框的选中状态。 带有复选框和任务的容器将附加到主待办事项列表容器中。 当您运行此代码时,单击任务文本将切换相应的复选框。