Javascript 为什么不添加eventListener?
我在todo列表中有可以添加和删除任务的代码。我正在尝试实现代码,以便在双击添加任务后对其进行编辑。现在,代码应该在双击LI元素后登录到控制台,但它没有做任何事情Javascript 为什么不添加eventListener?,javascript,html,Javascript,Html,我在todo列表中有可以添加和删除任务的代码。我正在尝试实现代码,以便在双击添加任务后对其进行编辑。现在,代码应该在双击LI元素后登录到控制台,但它没有做任何事情 newTodoInput.addEventListener('keyup', function addTodoController(event){ if ( event.keyCode === 13){ if ( newTodoInput.value !== '' ){ var newT
newTodoInput.addEventListener('keyup', function addTodoController(event){
if ( event.keyCode === 13){
if ( newTodoInput.value !== '' ){
var newTask = todos.addTaskToList(newTodoInput.value.trim(), todos.taskList);
var clone = templateContent.cloneNode(true);
clone.querySelector("label").appendChild(document.createTextNode(newTodoInput.value.trim()));
todoList.appendChild(clone);
newTodoInput.value = '';
deletingTasks();
editingTasks();
}
}
}); // END addEventListener(addTodoController)
function deletingTasks() {
var deleteTaskButtons = document.querySelectorAll('button.destroy');
_.last(deleteTaskButtons).addEventListener('click', function removeLi(){
//console.log(event.target.parentNode.parentNode.parentNode);
event.target.parentNode.parentNode.parentNode.removeChild(event.target.parentNode.parentNode);
todos.deleteTask(_.indexOf(deleteTaskButtons, event.target), todos.taskList);
});
}
function editingTasks(){
var editTask = document.querySelectorAll('li');
_.last(editTask).addEventListener('dblclick', function taskEdit(){
console.log("Edit this task!");
});
}
每次添加任务时,我都会调用editingTasks函数,就像我使用Delete tasks函数一样,这样事件侦听器将在添加时添加到每个li元素,但我没有得到任何结果。有没有关于为什么这段代码不起作用的指针?如果需要,这里是HTML:
<ul class="todo-list">
<!-- These are here just to show the structure of the list items -->
<!-- List items should get the class `editing` when editing and `completed` when marked as completed -->
<template id='newtasktemplate'>
<li>
<div class="view">
<input class="toggle" type="checkbox">
<label class="tasking"></label>
<button class="destroy"></button>
</div>
<input class="edit" value="Rule the web">
</li>
</template>
</ul>
-
您的代码可能会:
var editTask = document.querySelectorAll('li');
_.last(deleteTaskButtons).addEventListener(...)
可能没有选择正确的标签。我的建议是更改模板,在
标记中添加唯一的类名,如下所示:
<li class="myListItem">
你确定最后一个
就是你刚才添加的那一个吗?我很确定,我肯定是错的(新手)。我认为它的工作方式与destroy按钮在deletingTasks功能中的工作方式相同。好吧,您正在为deletingTasks使用一个更具体的选择器,它不可能选择除最后一个delete按钮之外的其他按钮。但是,如果页面中的任何其他标签恰好位于您正在添加的标签之后(甚至可能是模板中的标签),则可能会破坏您的代码。你确定只针对正确的标记的更具体的选择器如何?这是一个很好的观点,关于如何做到这一点有什么提示吗?可能有帮助的链接?我不确定是否引用html元素。就像您的“删除”按钮上有唯一的类名一样,请对您想要定位的
标记执行相同的操作。谢谢,我希望您能发布一个答案,以便我可以接受它!
var editTask = document.querySelectorAll('.myListItem');
_.last(deleteTaskButtons).addEventListener(...)