【发布时间】:2017-11-09 08:33:07
【问题描述】:
当我单击复选框并单击列表中单个项目的删除时,它会按预期删除。当我检查所有项目并单击删除时,它没有。我不知道为什么,我想知道。我知道要删除数组中引用 DOM 元素索引的元素,您必须首先获取 DOM 元素索引,但我目前对此不感兴趣。我真的不知道为什么这段代码不起作用,这让我觉得很愚蠢。
window.onload = function() {
let toDos = [
{ title: "MOM", complete: false }
,{ title: "DAD", complete: false }
,{ title: "The Universe", complete: false }
,{ title: "MOM", complete: false }
,{ title: "DAD", complete: false }
,{ title: "The Universe", complete: false}
];
const deleteButton = document.getElementsByTagName("button")[0];
var inputElems = document.querySelectorAll(".todo-delete");
deleteButton.addEventListener("click", function() {
inputElems = document.querySelectorAll(".todo-delete");
for (var i = 0; i < inputElems.length; i += 1) {
if (inputElems[i].checked) {
toDos = toDos.filter(function(val, index) {
if (index !== i) {
return val
}
});
}
}
inputElems = document.querySelectorAll(".todo-delete");
console.log(toDos);
renderDOM(toDos);
});
function renderDOM(toDos) {
const todoList = document.getElementById('todo-list');
todoList.textContent = '';
toDos.forEach(function(toDo) {
const newLi = document.createElement('li');
const checkbox = document.createElement('input');
checkbox.className = "todo-delete";
checkbox.type = "checkbox";
newLi.textContent = toDo.title;
todoList.appendChild(newLi);
newLi.appendChild(checkbox);
});
}
renderDOM(toDos)
};
<ul id="todo-list">
</ul>
<hr>
<button>delete</button>
【问题讨论】:
标签: javascript dom dom-events