You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JavaScript将输入框内容转换为复选框项(待办清单开发)

实现待办清单的复选框任务项功能

你当前代码的核心问题是复选框创建方式错误,且使用innerHTML会覆盖原有任务内容。以下是完整的修改方案,包含复选框创建、任务添加/状态切换/删除功能:

修改后的JavaScript代码

// 获取添加按钮和待办列表容器
var add_task = document.getElementById('TaskAdd');
var todoList = document.getElementById('Do1');

// 绑定点击事件
add_task.addEventListener('click', addtask);

// 添加任务函数
function addtask() {
    // 获取输入框内容并去除首尾空格
    var taskText = document.getElementById("Taskname").value.trim();
    
    // 空内容直接返回,不添加无效任务
    if (!taskText) return;

    // 创建复选框元素
    var checkbox = document.createElement("INPUT");
    checkbox.type = "checkbox";
    checkbox.className = "task-checkbox";

    // 创建任务文本节点
    var taskNode = document.createTextNode(" " + taskText);

    // 创建删除按钮
    var deleteBtn = document.createElement("button");
    deleteBtn.textContent = "X";
    deleteBtn.className = "delete-btn";
    deleteBtn.addEventListener('click', function() {
        this.parentElement.remove();
    });

    // 创建列表项,组装所有元素
    var listItem = document.createElement("LI");
    listItem.appendChild(checkbox);
    listItem.appendChild(taskNode);
    listItem.appendChild(deleteBtn);

    // 将列表项添加到待办列表
    todoList.appendChild(listItem);

    // 绑定复选框切换事件:完成/未完成任务迁移
    checkbox.addEventListener('click', function() {
        var completedList = document.getElementById('Com1');
        this.checked ? completedList.appendChild(this.parentElement) : todoList.appendChild(this.parentElement);
    });

    // 清空输入框,优化用户体验
    document.getElementById("Taskname").value = "";
}

补充CSS样式(优化界面)

在原有CSS基础上添加以下样式,让元素布局更美观:

.delete-btn {
    margin-left: 10px;
    background-color: #ff4444;
    color: white;
    border: none;
    border-radius: 50%;
    width: 20px;
    height: 20px;
    cursor: pointer;
    font-size: 12px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.task-checkbox {
    margin-right: 8px;
}

关键修改点说明

  • 修复复选框创建:原代码错误设置TaskCheck属性,正确做法是设置type="checkbox"
  • 避免内容覆盖:不再用innerHTML直接替换内容,而是创建新的<li>元素追加到列表,保留原有任务
  • 输入校验:添加空内容判断,防止添加无效任务
  • 任务状态切换:绑定复选框点击事件,勾选后将任务移到已完成列表,取消勾选移回待办列表
  • 删除功能:添加删除按钮,点击可移除对应任务
  • 体验优化:添加任务后自动清空输入框

完整HTML代码(保持原结构即可)

<html>
    <head>
        <title>To-Do List Project</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link rel="stylesheet" href="style.css">
    </head>
    <body>
        <!-- Title of the project -->
        <h1 class="center"> To-Do List Program </h1>
        <!-- Creating the background of the cover -->
        <div class="background-cover"></div>
            <!-- Creating container to present the Inputfield to add task for the To-Do list -->
            <div class="container">
                <h1 class="center"> Enter text into the input field to add items into your list </h1>
                <h1 class="center"> Click on the item to mark that the task are complete </h1>
                <h1 class="center"> Click on X to remove the task from To-Do List </h1>
                <input type="text" id="Taskname" name="Tname" placeholder="Input task" size="14">
                <button type="button" id="TaskAdd" onclick="addtask();"> Add </button>
                
                <!-- Creating fieldset to locate the tasks into two sections, first section is the To-Do list -->
                <fieldset class="background-cover-3">
                    <legend class="background-cover-2"> To-Do: </legend>
                    <ul id="Do1" style="list-style: none;">
                        <li>
                        </li>
                    </ul>
                </fieldset>

                <!-- Creating fieldset to locate the tasks into two sections, Second section is the Completed list -->
                <fieldset class="background-cover-3 fieldset2">
                    <legend class="background-cover-2 fieldset2"> Completed: </legend>
                    <ul id="Com1" style="list-style: none;">
                        <li>
                        </li>
                    </ul>
                </fieldset>
                
            </div>
    <script src="main.js"></script>
    </body>
</html>

内容的提问来源于stack exchange,提问作者WDpad159

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 19:15:32