繁体   English   中英

为什么单击添加按钮时文本值重复 JavaScript

[英]Why is the text value duplicating when clicking on the add button JavaScript

我正在做一个基本的待办事项列表项目,其中必须将来自文本输入的值添加到包含 3 个硬编码列表项的所有属性的无序列表中。

我已经将输入字段中的值添加到列表中,但之后的每个任务都会重复。 我将在下面添加代码。 我对编程很陌生,所以请原谅代码哈哈。 提前致谢。

<body>
    <div class="todo-area">
        <div class="add-area">
            <h1 id="list-name">To-Do List</h1>
            <label for="todo"></label>
            <input type="text" name="todo" id="input-task">
            <button type="submit" id="add-task-button" onclick="add()">Add Task</button>
        </div>
        <div class="list-area">
            <ul id="task-list">
                <li class="li-input"><input type="checkbox" id="check"><span class="task">Email David</span><button class="delete-btn">X</button></li>
                <li class="li-input"><input type="checkbox" id="check"><span class="task">Create ideal persona guide</span><button class="delete-btn">X</button></li>
                <li class="li-input"><input type="checkbox" id="check"><span class="task">Set up A/B test</span><button class="delete-btn">X</button></li>
            </ul>
        </div>
    </div>
    <script src="app.js"></script>
</body>
function add(){
    document.getElementById("add-task-button").addEventListener("click", function (event) {
        let textValue = document.getElementById("input-task").value;
        let tlist = document.getElementById("task-list");
        let newLi = `<li class="li-input"><input type="checkbox" id="check"><span class="task">${textValue}</span><button class="delete-btn">X</button></li>`;
        tlist.insertAdjacentHTML("beforeend", newLi);
        event.preventDefault();
    });
}

每次单击按钮时,您都会向按钮添加一个新事件侦听器,该按钮将添加您的新项目。

一个简单的解决方法是不添加事件侦听器,因为您的按钮元素中的 onClick 已经导致添加 function 在单击时运行。

本质上将 JS 替换为:

function add(){
        let textValue = document.getElementById("input-task").value;
        let tlist = document.getElementById("task-list");
        let newLi = `<li class="li-input"><input type="checkbox" id="check"><span class="task">${textValue}</span><button class="delete-btn">X</button></li>`;
        tlist.insertAdjacentHTML("beforeend", newLi);
        event.preventDefault();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM