Javascript appendChild()参数不是函数

Javascript appendChild()参数不是函数,javascript,dom,appendchild,Javascript,Dom,Appendchild,我试图向列表中的每个项目添加一个按钮,但现在每当我运行view.displayTodos()时,都会收到错误消息:“TypeError:this.createDeleteButton不是函数” 我认为问题与线路有关: appendChild(this.createDeleteButton()); 但我不知道为什么它不起作用 提前感谢您的帮助最简单的解决方法是将这个保存到那个 var视图={ displayTodos:函数(){ log(“displayTodos”,this); var-arr

我试图向列表中的每个项目添加一个按钮,但现在每当我运行view.displayTodos()时,都会收到错误消息:“TypeError:this.createDeleteButton不是函数”

我认为问题与线路有关: appendChild(this.createDeleteButton()); 但我不知道为什么它不起作用


提前感谢您的帮助

最简单的解决方法是将
这个
保存到
那个

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;
    }
};