Uncaught TypeError:无法设置未定义的属性'todoText'
问题描述:
处理Javascript对象和函数。面临问题。Uncaught TypeError:无法设置未定义的属性'todoText'
var todoList = {
todo:[],
displayTodo:function(){
console.log('My Todo:',this.todo);
},
addTodo:function(todoText){
this.todo.push({
todoText:todoText,
complete:false
});
this.displayTodo();
},
changeTodo:function(posi,newTodo){
//this.todo[posi] = newTodo;
this.todo[posi].todoText=newTodo;
this.displayTodo();
},
toggleComplte:function(posi){
var todo = this.todo[posi];
todo.complete = !todo.complete;
this.displayTodo();
}
}
todoList.addTodo('Item1');
todoList.toggleComplte(0);
运行时出现错误。
VM1196:16 Uncaught TypeError: Cannot set property 'todoText' of undefined
at Object.changeTodo (<anonymous>:16:29)
at <anonymous>:21:10
有人可以建议什么是错误吗?
答
与您当前的变化,你的代码工作正常,我没有看到任何控制台错误
var todoList = {
todo:[],
displayTodo:function(){
console.log('My Todo:',this.todo);
},
addTodo:function(todoText){
this.todo.push({
todoText:todoText,
complete:false
});
this.displayTodo();
},
changeTodo:function(posi,newTodo){
//this.todo[posi] = newTodo;
this.todo[posi].todoText=newTodo;
this.displayTodo();
},
toggleComplte:function(posi){
var todo = this.todo[posi];
todo.complete = !todo.complete;
this.displayTodo();
}
}
todoList.addTodo('Item1');
todoList.toggleComplte(0);
看起来像你的“this.todo [POSI]”将返回一个未定义changeTodo函数中的值。 Theres上面没有任何关于你调用changeTodo函数的例子,所以需要更多的示例来进一步提供帮助。 –
可能没有任何待办事项,因为'this.todo [0]'是未定义的(即,您在最后有效地执行了'undefined.todoText = ...',并且这会导致您得到的错误)。如果您使用过调试器,您可以轻松看到。看看这个教程:https://developers.google.com/web/tools/chrome-devtools/javascript/ – CherryDT
@AidanGee是的。最初我使用addTodo函数添加了一个值,只是为了确保我有一些切换值。我正在编辑程序中的最后一行,然后检查。 – Rushit