2017-11-01 1 views
0

버튼을 클릭 할 때 클래스를 토글하여 색상을 변경하는 addEventListener 화살표 함수가 있습니다. 내 콘솔에서es6 addeventlistener - 정의되지 않은 'classList'속성을 읽을 수 없습니다.

var clickButton = document.getElementById("clicker"); 

clickButton.addEventListener("click", =>() { 
    this.classList.toggle("modified"); 
}, false); 

: 그 아래 보이는

var clickButton = document.getElementById("clicker"); 

clickButton.addEventListener("click", function() { 
    this.classList.toggle("modified"); 
}); 

작품을 완벽하게 : 그것은 재미있는 부분

Uncaught TypeError: Cannot read property 'classList' of undefined at HTMLButtonElement.

은 다음과 같은 스탠드 JS 기능이 변환입니다. 나는 arrow 함수 버전이 classList를 정의되지 않은 이유를 이해하지 못합니다.

classList은 ES6 화살표 기능에서 어떻게 작동합니까?

+0

왜 인용으로 오리 도리의 의견

clickButton.addEventListener("click", (e) => { e.currentTarget.classList.toggle("modified"); }, false); 

에 의해으로 제시되는 그것을' clickButton.classList.toggle' 버튼에 대한 참조가 이미 있으므로? – loganfsmyth

+0

당신은 할 수 있습니다 만, 이제는 '이'가 화살표 기능과 다르게 작동한다는 것을 알게 된 지금 Q & A를 게시하고 싶습니다. – kawnah

+0

아, 네가 네 자신의 질문에 답했다는 것을 알지 못했다. 클래스 목록이 ES6 화살표 함수에서 어떻게 작동합니까? '라는 질문을 한 후에 질문이 오해의 소지가있는 것처럼 보입니다. 대답은 "화살표가 다른 곳에서 작동하는 것과 완전히 동일합니다"입니다. 당신이 대답 한 질문은 "왜이 클래스 목록 호출이 작동하지 않는가"입니다. – loganfsmyth

답변

2

한 가지 방법 "해결"이 e.currentTarget를 사용하는 대신 Wesbos

Use currentTarget instead of target as target can change if you have nested elements like a span inside a link

관련 문제