【发布时间】:2019-12-08 10:55:57
【问题描述】:
我正在尝试制作一个需要以下内容的购物清单应用程序 -
根据用户输入将项目添加到列表中,并包含一个删除按钮。
通过样式切换被划线的项目。
当点击相应li中的删除按钮时,从列表中删除项目。
enter code here
我遇到的问题是,添加新列表项后,我无法划掉旧列表项。
我创建了一个 for 循环函数来循环遍历列表并打开和关闭 .done 类。它可以让我打开和关闭线路,但是一旦通过单击或按键事件将新项目添加到列表中,该功能就会停止工作。
我想通过放置 toggleDone();在 click 和 keypress 函数内部以及全局函数内部,它适用于新添加的列表项和原始列表项。
实际发生的情况是,如果我单击将新项目添加到列表中,它不再适用于原始列表项目,然后如果我按下键将项目添加到列表中,则该功能适用于旧列表项目以及按键项,但不是点击项。
const input = document.getElementById("userInput");
const btn = document.getElementById("enter");
const ul = document.querySelector("ul");
const list = document.getElementsByTagName("li");
function toggleDone(){
for (let i=0; i < list.length; i++){
list[i].addEventListener("click", function(){
list[i].classList.toggle("done");
});
}
}
【问题讨论】:
-
btn.addEventListener("click", function(){ if (inputLength() > 0) { createListElement(); } toggleDone(); }) 这是我的点击事件
-
你也可以发布 HTML 吗?
标签: javascript html function loops dom