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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Problem mit der for-Schleife
Ersetzen
mit
ebenso für
completedTasksHolder
Bascially, die Sie erstellt haben eine Schleife ohne Ende-Bedingung und irgendwann
incompleteTasksHolder.children[i]
istundefined
.JS: