未捕获的类型错误:无法读取属性'querySelector'的未定义
Uncaught TypeError: Cannot read property 'querySelector' of undefined
你能帮我吗?当我运行此程序时,我会在'bindTaskEvents'函数中得到"Uncaught TypeError:无法读取未定义的属性'querySelector'",该函数处理"completedTasksHolder"列表。在控制台中尝试:
console.log(completedTasksHolder.children[0])
只回李刚刚好。
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);
}
这里可能出了什么问题?谢谢
for循环存在问题
更换
for (var i = 0; incompleteTasksHolder.children.length; i++) {
带有
for (var i = 0; i < incompleteTasksHolder.children.length; i++) {
类似地用于completedTasksHolder
基本上,您已经创建了一个没有结束条件的循环,并且在某个点上incompleteTasksHolder.children[i]
是undefined
。
-
var db = null; var db2 = null; var db3 = null; var dbUser = null; var dbName = "estudos.db"; var app = { // Application Constructor initialize: function() { document.addEventListener('deviceready', this.onDeviceReady.bind(this), false); }, // deviceready Event Handler // // Bind any cordova events here. Common events are: // 'pause', 'resume', etc. onDeviceReady: function() { this.receivedEvent('deviceready'); }, // Update DOM on a Received Event receivedEvent: function(id) { var parentElement = document.getElementById(id); var listeningElement = parentElement.querySelector('.listening'); var receivedElement = parentElement.querySelector('.received'); listeningElement.setAttribute('style', 'display:none;'); receivedElement.setAttribute('style', 'display:block;'); // OPERACOES BD - inicio //banco de dados local - aceite de termos e outras coisas dbUser = window.sqlitePlugin.openDatabase({name: 'user.db', location: 'default'}); dbUser.transaction(function(tx) { tx.executeSql('CREATE TABLE IF NOT EXISTS Users (flg_aceite, flg_valid_bd)'); }, function(error) { alert('Transaction ERROR: ' + error.message); }, function() { console.log('Database OK'); }); //copia do banco de dados de estudos window.plugins.sqlDB.copy(dbName, 0, copysuccess, copyerror); // OPERACOES BD - fim } }; app.initialize(); //--------------------------------------------------------------- function copysuccess() { //primeira versão deste banco de dados. o comando anterior. //provavelmente realizou a cópia, abro o BD. db = window.sqlitePlugin.openDatabase({name: dbName}); //preciso verificar se existem versões anteriores deste BD. Deleto por precaucao dropTable(); fts_table(); } function copyerror(e) { //esta versao do banco de dados ja existe. //abro o BD db = window.sqlitePlugin.openDatabase({name: dbName}); //db3 = window.sqlitePlugin.openDatabase({name: "vtestudos"}); //alert("copyerror" + JSON.stringify(e)); } //--------------------------------------------------------------- function fts_table(){ db.transaction(function(tx) { tx.executeSql('CREATE VIRTUAL TABLE vtestudos USING FTS3(titulo, texto, id_titulo)', [], function(tx,res){ //alert("nao deu erro"); //db = window.sqlitePlugin.openDatabase({name: "vtestudos"}); //alert("uai. deu pra abrir"); db.transaction(function(tx) { tx.executeSql('INSERT INTO vtestudos(titulo, texto, id_titulo) SELECT titulo, texto, id_titulo FROM estudos', [], function(tx,res){ //db3 = window.sqlitePlugin.openDatabase({name: "vtestudos"}); console.log('insert ok'); }); }, function(err){ alert(err.message); }); }); }, function(err){ alert(err.message); }); } //--------------------------------------------------------------- function dropTable() { window.plugins.sqlDB.remove("estudosprev1", 0, rmsuccess,rmerror); window.plugins.sqlDB.remove("estudosprev2", 0, rmsuccess,rmerror); } function rmsuccess() { //existe versão anterior //alert("removesuccess"); console.log('existe versão anterior'); } function rmerror(e) { //não existe versão anterior. ignoro. //alert("removeerror" + JSON.stringify(e)); console.log('n existe versão anterior. ignoro.'); }
相关文章:
- 主干中的模型属性未定义
- JavaScript 2d 数组导致“无法读取未定义的属性'未定义'”
- JSON对象属性未定义
- Waypoint的循环,退出循环后属性未定义
- Javascript:错误“无法设置属性”..'未定义”
- 翡翠 - 显示对象属性 - 未定义
- 属性未定义,但控制台.log可以看到它
- JavaScript 对象的属性未定义
- Javascript 对象属性未定义(但属性已设置)
- DOM 元素属性未定义 - jquery / ruby on rails.
- Nodejs JSON 属性未定义
- 错误:窗口打开器的属性未定义
- angular Js:Array.lenght属性未定义
- 正在尝试访问JavaScript对象的属性=未定义
- Marionette属性未定义,请从API获取
- AngularJS作用域属性未定义
- 对象的属性未定义,尽管已指定值
- 为什么我一直收到一个错误,说对象属性未定义
- 对象属性未定义,但我看到它不是
- .map()img src属性未定义