在您的 javascript 中,当您声明 deleteButton 和 completeButton 时,它们都被分配了相同的元素 ul。该元素包含整个列表。这不是你想要的,你想要处理按钮的点击。 deleteButton 应该分配给您的删除按钮元素,您的 completeButton 应该分配给您的完整按钮元素。为此,只需使用所需按钮的 ID 而不是 UL 的 ID。
在你的代码中,改变这个:
var deleteButton = document.getElementById("todo");
deleteButton.addEventListener("click", deleteListItem);
var completeButton = document.getElementById("todo");
completeButton.addEventListener("click", completeListItem);
到这里:
var deleteButton = document.getElementById("Remove");
deleteButton.addEventListener("click", deleteListItem);
var completeButton = document.getElementById("Complete");
completeButton.addEventListener("click", completeListItem);
编辑:
由于您的按钮不是唯一的,因此您不应使用 id 来添加事件侦听器。您应该使用一个类并通过循环将事件侦听器分配给该类的所有元素。在您的 html 中为您的按钮添加一个类属性,如下所示:<button class="Remove"><i class="fa fa-trash" aria-hidden="true"></i></button>。然后以这种方式处理事件:
var deleteButtons = document.getElementsByClassName("Remove");
for (var i = 0; i < deleteButtons.length; i++) {
deleteButtons[i].addEventListener('click', deleteListItem, false);
}
var completeButton = document.getElementsByClassName("Complete");
for (var i = 0; i < completeButton.length; i++) {
completeButton[i].addEventListener('click', completeListItem, false);
}