Javascript appendChild()参数不是函数
我试图向列表中的每个项目添加一个按钮,但现在每当我运行view.displayTodos()时,都会收到错误消息:“TypeError:this.createDeleteButton不是函数” 我认为问题与线路有关: appendChild(this.createDeleteButton()); 但我不知道为什么它不起作用Javascript appendChild()参数不是函数,javascript,dom,appendchild,Javascript,Dom,Appendchild,我试图向列表中的每个项目添加一个按钮,但现在每当我运行view.displayTodos()时,都会收到错误消息:“TypeError:this.createDeleteButton不是函数” 我认为问题与线路有关: appendChild(this.createDeleteButton()); 但我不知道为什么它不起作用 提前感谢您的帮助最简单的解决方法是将这个保存到那个 var视图={ displayTodos:函数(){ log(“displayTodos”,this); var-arr
提前感谢您的帮助最简单的解决方法是将
这个
保存到那个
var视图={
displayTodos:函数(){
log(“displayTodos”,this);
var-arr=[1,2];
var=这个;
arr.forEach(函数(todo){
//log(“todolist”,this);
createDeleteButton();
});
},
createDeleteButton:函数(){
console.log(“创建”);
}
};
view.displayTodos()
将此.createDeleteButton()
替换为视图。createDeleteButton()
似乎有效
谢谢Juan此的上下文与您想象的不同。请包括一个MCVE()。正如Epasarello所说,您似乎误解了“this”的范围。您可能将
view.displayTodos
作为函数传递,而丢失了this
。对于本例,最简单的解决方案是将this.createDeleteButton()
替换为view.createDeleteButton()
定义了todoList
的位置?@TED Whitehead这不是问题,错误发生在该行之后
var view = {
displayTodos: function () {
var todosUl = document.querySelector('ul');
todosUl.innerHTML = '';
todoList.todos.forEach(function(todo){
var todoLi = document.createElement('li');
var todoTextWithCompletion = ''
if (todo.completed) {
todoTextWithCompletion = '(X) ' + todo.todoText;
}
else {
todoTextWithCompletion = '( ) ' + todo.todoText;
}
todoLi.textContent = todoTextWithCompletion;
todoLi.appendChild(this.createDeleteButton());
todosUl.appendChild(todoLi);
});
},
createDeleteButton: function () {
var deleteButton = document.createElement('button');
deleteButton.textContent = 'Delete';
deleteButton.className = 'deleteButton';
return deleteButton;
}
};