Javascript 为什么不添加eventListener?

Javascript 为什么不添加eventListener?,javascript,html,Javascript,Html,我在todo列表中有可以添加和删除任务的代码。我正在尝试实现代码,以便在双击添加任务后对其进行编辑。现在,代码应该在双击LI元素后登录到控制台,但它没有做任何事情 newTodoInput.addEventListener('keyup', function addTodoController(event){ if ( event.keyCode === 13){ if ( newTodoInput.value !== '' ){ var newT

我在todo列表中有可以添加和删除任务的代码。我正在尝试实现代码,以便在双击添加任务后对其进行编辑。现在,代码应该在双击LI元素后登录到控制台,但它没有做任何事情

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(...)