Uncaught TypeError: Cannot read property 'querySelector' undefined

Könnten Sie mir helfen, bitte? Wenn ich diese ausführe, bekomme ich "Uncaught TypeError: Cannot read property 'querySelector' of undefined" in der "bindTaskEvents" - Funktion, wo die Funktion sich mit der "completedTasksHolder" - Liste. Versuchen Sie dies in der Konsole:

console.log(completedTasksHolder.children[0]) 

gibt die nur li Prima.

var taskInput = document.getElementById("new-task"); //new-task
var addButton = document.getElementsByTagName("button")[0]; //first button
var incompleteTasksHolder = document.getElementById("incomplete-tasks"); //ul#incomplete-tasks
var completedTasksHolder = document.getElementById("completed-tasks"); //ul#completed-tasks

//Add a new task
var addTask = function(){
    console.log("Add task...");
}
//Edit an existing task
var editTask = function() {
    console.log("Edit task...");
}

var deleteTask = function() {
    console.log("Delete task...");
//Delete an existing task

    //When the Delete button is pressed
        //Remove the parent li from the ul
}

var taskCompleted = function() {
    console.log("Complete task...");
//Mark a task as complete
    //When the checkbox is checked
        //Append the task li to the #completed-tasks
}

//Mark a task as incomplete
var taskIncomplete = function() {
    console.log("Incomplete task...");
    //When the checkbox is unchecked
        //Append the task li to the #incomplete-tasks
}

var bindTaskEvents = function(taskListItem, checkBoxEventHandler) {
    console.log("Bind li events");
    //select li's children
    var checkbox = taskListItem.querySelector("input[type=checkbox]");
    var editButton = taskListItem.querySelector("button.edit");
    var deleteButton = taskListItem.querySelector("button.delete");

    //bind editTask to editButton
    editButton.onclick = editTask;

    // bind deleteTask to deleteButton;
    deleteButton.onclick = deleteTask;

    //bind checkBoxEventHandler to checkbox
    checkbox.onchange = checkBoxEventHandler;
}

//Set the click handler to the addTask function
addButton.onclick = addTask;

//Cycle over incompleteTasksHiolder ul list items
for (var i = 0; incompleteTasksHolder.children.length; i++) {
        //bind events to li' children (taskCompleted)
    bindTaskEvents(incompleteTasksHolder.children[i], taskCompleted);
}     

//Cycle over completedTasksHiolder ul list items

for (var i = 0; completedTasksHolder.children.length; i++) {
        //bind events to li' children (taskCompleted)
    bindTaskEvents(completedTasksHolder.children[i], taskIncomplete);
}     

Was kann hier falsch sein? Danke!

  • Was ist incompleteTasksHolder.children[i] ?
  • Es ist die ul (container) mit Liste posten wie die Kinder
Schreibe einen Kommentar