2017-04-21 3 views
-1

Javascript 개체 및 함수 작업. 그것에 직면 한 문제.잡히지 않은 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 

어떤 사람이 오류라고 생각하나요? 현재와 ​​

+0

이 같은데 어떤 콘솔 오류 'this.todo [포지]를'보고 있지 않다, 당신의 코드가 잘 작동 변경 값은 changeTodo 함수에 있습니다. 위의 예제는 changeTodo 함수를 호출 한 곳이 아니므로 더 많은 도움이 될 예제가 더 필요합니다. –

+1

아마도 todos가 존재하지 않을 것입니다.'this.todo [0]'이 정의되지 않았기 때문에 todo # 0에 액세스하는 ergo가 실패합니다 (즉, 결국'undefined.todoText = ...'를 수행하면 오류가 발생합니다).). 디버거를 사용했다면 쉽게 알 수 있습니다. 이 자습서를 확인하십시오 : https://developers.google.com/web/tools/chrome-devtools/javascript/ – CherryDT

+0

@AidanGee 예. 처음에는 addTodo 함수를 사용하여 값을 추가했습니다. 토글 할 값이 있는지 확인하기 위해. 프로그램의 마지막 줄을 편집하고 확인합니다. – Rushit

답변

1

내가 정의되지 않은를 반환

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

관련 문제