有人能告诉我,这段代码对于一个由香草JavaScript制作的超级简单的待办事项列表有多好/有多坏?在我的下一个项目上有什么要做或考虑的吗?
// establish variables
var addButton = document.getElementById('btnAdd');
// event listeners
addButton.addEventListener("click", addItem);
// assign event listener to all delete links
function assignDeleteLinkEvent(){
var deleteLinks = document.getElementsByClassName('delete-link');
for (var i=0;i<deleteLinks.length;i++){
deleteLinks[i].addEventListener("click", removeItem);
}
}
function addItem(){
// establish variables
var textBox = document.getElementById('textBox');
var list = document.getElementById('todoList');
var listElement = document.createElement('li');
var deleteLink = document.createElement('a');
// append item to list
list.appendChild(listElement);
listElement.innerText = textBox.value;
// append delete link to item
deleteLink.setAttribute("href", "#");
deleteLink.setAttribute("class", "delete-link");
deleteLink.innerHTML = "x";
listElement.appendChild(deleteLink);
assignDeleteLinkEvent();
// reset input box
textBox.value = "";
}
// removes the item
function removeItem(){
var parent = this.parentNode.parentNode;
var child = this.parentNode
parent.removeChild(child);
}发布于 2015-03-26 23:35:43
addItem函数中,您每次都请求todoList和textbox的DOM。这些变量不会改变,因此可以在此函数之外设置这些变量。函数toDoList() { var list = document.getElementById('todoList');var addButton = document.getElementById('btnAdd');.函数addItem() {.list.appendChild(listElement);…}addItem函数中创建一个删除链接。这包括四个步骤。将所有这些都移动到一个单独的函数中,并调用它。这使您的addItem函数更简单,并集中了删除链接创建代码。函数createDeleteLink() { var deleteLink = document.createElement('a');deleteLink.setAttribute("href“、"#");deleteLink.setAttribute("class”、“删除-链接”);deleteLink.innerHTML = "x";返回deleteLink }函数addItem() {.listElement.appendChild(createDeleteLink());.}现在删除链接的创建本身就很容易看到,我们可以在创建时直接添加单击事件侦听器,而不是每次循环每次链接(实际上是将侦听器添加到已经有侦听器的项中。以下是我以上的想法(第五条除外):
function initToDoList() {
var textBox = document.getElementById('textBox');
var list = document.getElementById('todoList');
var addButton = document.getElementById('btnAdd');
addButton.addEventListener("click", addItem);
function createDeleteLink() {
var deleteLink = document.createElement('a');
deleteLink.setAttribute("href", "#");
deleteLink.setAttribute("class", "delete-link");
deleteLink.innerHTML = "x";
deleteLink.addEventListener("click", removeItem);
return deleteLink;
}
function addItem() {
var listElement = document.createElement('li');
listElement.innerText = textBox.value;
listElement.appendChild(createDeleteLink());
list.appendChild(listElement);
textBox.value = "";
}
function removeItem() {
var parent = this.parentNode.parentNode;
var child = this.parentNode
parent.removeChild(child);
}
}
initToDoList();https://codereview.stackexchange.com/questions/85116
复制相似问题