Function.prototype.bind에 대한 MDN 문서를 열었지만 스크립트가 여전히 작동하지 않습니다.javascript : 이벤트에서 "this"범위를 변경하는 방법
this
은 addEventListener에 추가 된 htmlElement를 참조합니다. 문제는 내 this
이 개체 창을 참조하는 이유입니다.
var handle1 = document.getElementById('handle1'),
handle2 = document.getElementById('handle2');
function doLogin() {
alert(this);
}
function enterForm(ev) {
if (ev.which === 13) {
doLogin();
}
}
handle1.addEventListener('click', doLogin, false);
// this alert: [object HTMLButtonElement] this is what i want
handle2.addEventListener('keyup', enterForm, false);
// this alert: [object Window] this is what i do not want
그래서, 어떻게이 문제를 해결하기 위해 여기
바인드 (http://jsbin.com/ejimor/1/edit)없이 스크립트입니까?
어떻게'bind'를 사용하려고 했습니까? – Ryan
가장 쉬운 해결책은 호출에서'ev' 또는'this'를 그냥 전달하는 것입니다 :'doLogin (ev);'. 또는 '호출'또는 '적용'을 사용하여 수신자를 명시 적으로 설정할 수 있지만 이는 단순한 문제를 지나치게 복잡하게 만듭니다. – Amadan
또한 폼의 제출을 가능한 두 가지 방식으로 처리하려고합니다. 한 번'submit' 이벤트를 처리하지 않는 이유는 무엇입니까? – Ryan