如何在不实际单击的情况下选中复选框

问题描述 投票:0回答:1

我正在处理一个简单的待办事项列表,我尝试将待办事项(即任务)与复选框链接起来,因此当我单击任务时,也应该选中该复选框。

但是我不想制作一个标签并赋予它“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 html events checkbox label
1个回答
0
投票

是的,可以使用 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 元素来保存任务文本。该跨度被赋予一个单击事件监听器,单击时该监听器会切换相应复选框的选中状态。 带有复选框和任务的容器将附加到主待办事项列表容器中。 当您运行此代码时,单击任务文本将切换相应的复选框。

© www.soinside.com 2019 - 2024. All rights reserved.