JS 에서 네 가지 이벤트 처리 프로그램 을 설정 하 는 방법 을 깊이 이해 하 다.
첫 번 째 방법(HTML 태그 속성):
<input type="button" id="btn1" value=" " onclick="alert(this.id);" />
위의 코드 는 HTML 탭 속성 을 설정 하여 button 에 클릭 이 벤트 를 추가 합 니 다.button 단 추 를 누 르 면 이 button 의 id,즉 btn 1 이 팝 업 됩 니 다.HTML 속성 을 통 해 이벤트 처리 프로그램 을 등록 하 는 것 은 예외 입 니 다.로 컬 변수 가 아 닌 전역 변 수 를 액세스 할 수 있 는 최상 위 함수 로 변 환 됩 니 다.역사적 인 원인 으로 인해 그들 은 수 정 된 역할 도 메 인 체인 에서 실 행 됩 니 다.HTML 속성 을 통 해 정 의 된 이벤트 처리 프로그램 은 로 컬 변수 처럼 대상,용기 대상(form)대상 과 document 대상 의 속성 을 사용 할 수 있 습 니 다.브 라 우 저 에서 다음 과 같은 코드 로 변 환 됩 니 다.
function (event){
with(document){
with(this.form||{}){
with(this){
/* */
}
}
}
}
with 의 용법 에 대해 서 는 스스로 찾 아 볼 수 있 습 니 다.여기 뒤에 설명 이 있 습 니 다.독자 가 먼저 스스로 좀 이해 하 다.연결 제공https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/with이런 방식 은 현재 이미 사용 을 추천 하지 않 는 다.
두 번 째 방식(호출 함수)
<input type="button" id="btn2" value=" " onclick="test()" />
<script type="text/javascript">
function test(){
alert(this.id);
}
</script>
이 코드 가 튀 어 나 온 것 은 undefined 입 니 다.이 설정 방식 은 전역 함 수 를 호출 하여 진 행 됩 니 다.이때 this 는 window 를 가리 키 며,이 button 의 호출 자가 아 닌 console.log(this=window)를 출력 할 수 있 습 니 다.검증 하 겠 습 니 다.
세 번 째 방식(호출 함수)
<input type="button" id="btn3" value=" " />
<script type="text/javascript">
var btn3 = document.getElementById("btn3");
btn3.onclick = function () {
alert(this.id);
};
</script>
이 코드 가 튀 어 나 온 것 은 btn 3 이다.이 이벤트 처리 프로그램 은 이벤트 목표 에 정의 되 어 있 기 때문에 이 대상 의 방법 으로 호출 됩 니 다(단,아래 는 IE 에 예외 가 있 습 니 다).이벤트 처리 프로그램 에서 this 키 워드 는 이벤트 목 표를 가리킨다.
addEventListener()를 사용 하여 등록 할 때 호출 된 처리 프로그램 은 이벤트 목 표를 this 값 으로 사용 합 니 다.그러나 attachment()로 등 록 된 처리 프로그램 을 함수 로 호출 하 는 경우 this 값 은 전역(window)대상 입 니 다.그 러 니까 4 중 방식.
네 번 째 방식(addEventListener 와 attachment 를 통 해):
<input type="button" id="btn3" value=" " onclick="test()" />
var btn = document.getElementById("btn3");
var handler = function () { console.log(this.id); };
if (btn.addEventListener) {
console.log("addEventListener");
btn.addEventListener("click", handler, false);
}
else if (btn.attachEvent) {//IE9
console.log("attachEvent");
btn.attachEvent("onclick",handler);
}
IE5-IE8 버 전에 서 출력 한 것 은 undefined 입 니 다.(이 때 호출 된 것 은 attachement)IE9 이후 버 전 출력 btn 3.
IE5-8 에 있 는 그 문 제 를 복구 하려 면 다음 방법 을 사용 하 세 요.
/*
*target: ,button
*type:"click" , on
*handler:
*/
function addEvent(target,type,handler){
if (target.addEventListener) {
target.addEventListener(type, handler, false);
}
else if (target.attachEvent) {//IE9
btn.attachEvent("on"+type,function(event){
return hanlder.call(target,event);// , this 。
});
}
}
위 에서 말 한 것 은 편집장 님 께 서 소개 해 주신 JS 에서 네 가지 이벤트 처리 프로그램 을 설정 하 는 방법 입 니 다.여러분 께 도움 이 되 셨 으 면 합 니 다.궁금 한 점 이 있 으 시 면 댓 글로 남 겨 주세요.편집장 님 께 서 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[2022.04.19] 자바스크립트 this - 생성자 함수와 이벤트리스너에서의 this18일에 this에 대해 공부하면서 적었던 일반적인 함수나 객체에서의 this가 아닌 오늘은 이벤트리스너와 생성자 함수 안에서의 this를 살펴보기로 했다. new 키워드를 붙여 함수를 생성자로 사용할 때 this는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.