JavaScript event
2021. 12. 3. 11:16ㆍStudy/JavaScript
이벤트
- 프로그램에 의해 감지되고 처리될 수 있는 동작이나 사건
- 키보드나 마우스 동작처럼 브라우저에서 발생하는 사건(순간)들
- 사용자가 발생시킬 수도 있고 응용프로그램이 발생시킬 수도 있음.
이벤트의 종류
프레임 이벤트, 폼 이벤트, 드래그 이벤트, 클립보드 이벤트, 프린트 이벤트, 미디어 이벤트 등 수많은 이벤트가 있다.
* Mouse Event
onClick | 마우스로 해당 엘리먼트를 클릭함 |
onDbClick | 마우스로 해당 엘리먼트를 더블클릭함 |
onMouseDown | 마우스를 누름(클릭은 마우스를 눌렀다 때는 것으로 구별됨) |
onMouseMove | 마우스가 엘리먼트 위에서 이동함 |
onMouseOut | 마우스가 엘리먼트에서 벗어남 |
onMouseUp | 마우스를 똄(MouseDown과 반대 됨) 버튼을 누른 상태에서 떼는 경우 |
* keyboard Event
onKeyDown | 키보드 버튼을 누르고 있는 경우 (어떤 키인지 읽으려면 함수를 호출하여 event.KeyCode를 참고해야 한다) |
onKeyPress | 키보드 버튼을 눌렀다 뗀 경우 (마우스의 클릭과 유사) |
onKeyUp | 키보드 버튼을 누르고 있다가 뗀 경우 (MouseUp과 유사) |
* HTML Control Event
onBlur | 엘리먼트가Focus(초점)를 잃음. 예를 들어 버튼을 클릭하면 포커스(점선테두리로 보임)가 버튼에 잡혀있는데 이 때 다른것을 클릭하거나 탭 등으로 포커스를 이동할 경우를 의미함 |
onChange | 엘리먼트에서 특정 내용을 선택 혹은 변경하는 경우, 셀렉트박스(select box)에서 선택된 아이템을 변경하는 경우가 이에 해당됨 |
onFocus | 엘리먼트에 초점이 맞춰지는 경우 |
onReset | 리셋 이벤트가 발생하는 경우. 대표적으로 input box의 타입 reset이 적용될 때이다. |
onSelect | 엘리먼트 내 문자열을 블럭화 할 경우 (즉 드래그 혹은 쉬프트+방향키 등으로 문자열에 블럭을 씌우는 경우) |
onSubmit | 폼(form) 태그 내에서 전송 (Submit) 이벤트가 발생하는 경우 |
* window Events
onLoad | 페이지나 이미지 등의 엘리먼트가 로딩이 완료되는 경우 |
onResize | 윈도우나 프레임의 사이즈가 변경되는 경우 |
onUnLoad | 온로드의 반대로서 페이지를 이탈하는 경우 |
요소에 이벤트를 바인딩하는 세가지 방법
1. HTML 이벤트 핸들러
*onClick : on이 붙으면 Event Handler라고 한다.
*꼭 함수를 만들어 사용해야 한다.
function happy(){
alert('happy day');
}
<h3 id="heading1" onclick="happy()">좋은 날</h3>
onblur를 이용해 피드백 주기
* 함수기 때문에 window.onload를 안해줘도 된다.
function checkUsername() {
var elMsg = document.getElementById('feedback');
var elUsername = document.getElementById('username');
if (elUsername.value.length < 5) {
elMsg.textContent = 'Username must be 5 characters or more';
} else {
elMsg.textContent = '';
}
}
<div id="page">
<h1>List King</h1>
<h2>New Account</h2>
<form method="post" action="">
<label for="username">Create a username: </label>
<input type="text" id="username" onblur="checkUsername()" /><!-- onblur : 포커스를 잃었을때 -->
<div id="feedback"></div>
<label for="password">Create a password: </label>
<input type="password" id="password" />
<input type="submit" value="sign up!" />
</form>
</div>
*object.textContent
innerHTML과 비슷하지만 텍스트만 로드 가능하다.
2. 전통적인 DOM 이벤트 핸들러
객체명.이벤트핸들러 = function(){
// 처리코드;
};
//문서의 로딩이 끝났을 때
window.onload = function () {
alert('환영합니다.');
};
클릭 시 알럿 처리
window.onload = function(){
var header = document.getElementById('header');
header.onclick = function(){
alert('클릭 시 처리');
header.onclick = null; // 이벤트 제거
}
};
<h1 id="header">Click</h1>
또 다른방법
header = document.getElementById('header');
function change(){
this.style.fontSize='50px';
this.style.color='red';
this.style.border='5px solid blue';
this.style.transition='all .3s';
};
header.onclick = change; // () 쓰면 에러
// 매개변수가 있을 때
btn.onclick = function(){
aaa('매개변수1', '매개변수2');
};
3. DOM 레벨2 이벤트 리스너
- W3C에서 공식적으로 지정한 DOM Level 2 이벤트 모델
- 한 번에 여러 개의 이벤트 리스너 추가
- 이벤트 전달 방식 중 이벤트 캡처링 지원
- 이벤트를 1개 이상 사용 할 수 있는 이점이 있다.
- IE9 부터 지원
element.addEventlistener('이벤트', functionName, false); // false는 생략 가능
element.addEventListener('이벤트', function(){functionName(10)}, false}; //매개변수 있을 때
//이벤트 제거
element.removeEventListener('이벤트', functionName, false);
window.onload = function(){
//문서 객체 가져오기
var button = document.getElementById('button');
var heading = document.getElementById('heading');
// 이벤트 리스너 whenClick1(), whenClick2() 작성
function whenClick1(){
heading.innerHTML = '행복한 날';
}
function whenClick2(){
heading.style.color = 'blue';
};
//button 문서 객체의 click 이벤트에 이벤트 리스너 연결
button.addEventListener('click', whenClick1); // on은 안됨
button.addEventListener('click', whenClick2);
// 추가되었던 이벤트 리스너 제거
//button.removeEventListener('click', whenClick2);
}
<input id="button" type="button" value="이벤트" />
<h5 id="heading">좋은 날</h5>
'Study > JavaScript' 카테고리의 다른 글
숫자 천 단위마다 콤마(,) 찍기 (0) | 2021.12.17 |
---|---|
Class 추가, 제거 (0) | 2021.12.03 |
setInterval, setTimeout, 현재시간표시 (0) | 2021.12.03 |
JavaScript 문서 객체 조작 (0) | 2021.12.03 |
BOM, DOM Object Model (0) | 2021.12.02 |