자바스크립트 이벤트(Event) 정리
📌 이벤트(Event)란?
웹 페이지에서 발생하는 특정 행동이나 동작을 의미
✅ 이벤트 핸들링(Handling): 특정 이벤트에 반응하여 특정 동작을 실행하는 것을 의미
✅ 이벤트 핸들러(리스너): 특정 이벤트가 발생하면 호출되는 함수
📌 JS의 이벤트 종류
마우스이벤트 | 설명 |
---|---|
click | 요소를 클릭할 때 발생 |
dblclick | 요소를 더블 클릭할 때 발생 |
mousedown | 마우스 버튼을 누를 때 발생 |
mouseup | 마우스 버튼을 뗄 때 발생 |
mouseover | 요소 위로 마우스를 올릴 때 발생 |
mouseout | 요소 밖으로 마우스를 뺄 때 발생 |
mousemove | 마우스가 움직일 때 발생 |
키보드 이벤트 | 설명 |
---|---|
keydown | 키를 누를 때 발생 |
keyup | 키를 뗄 때 발생 |
keypress | 키를 누르고 있을 때 발생 (현재는 deprecated) |
폼 이벤트 | 설명 |
---|---|
submit | 폼을 제출할 때 발생 |
change | 폼 요소의 값이 변경될 때 발생 |
focus | 폼 요소가 포커스를 받을 때 발생 |
blur | 폼 요소가 포커스를 잃을 때 발생 |
문서/윈도우 이벤트 | 설명 |
---|---|
load | 페이지나 이미지 등이 모두 로드될 때 발생 |
resize | 윈도우 크기가 변경될 때 발생 |
scroll | 스크롤할 때 발생 |
📌 이벤트 핸들러 속성 및 메서드
1) HTML 이벤트 핸들러 속성 (프로퍼티)
✅ HTML 요소에 직접 이벤트 핸들러 속성을 지정
<button onclick="alert('클릭!')">클릭</button>
✅ HTML 요소를 JS 객체로 가져와 핸들러 속성을 지정
<button id="myButton">클릭</button>
<script>
const button = document.getElementById('myButton');
button.onclick = function() {
alert('클릭!');
};
</script>
2) 인라인 이벤트 핸들러
✅ HTML 태그에 직접 onclick, onkeydown 등의 이벤트 속성을 사용하여 함수 지정
<button onclick="alert('클릭!')">클릭</button>
<input type="text" onkeydown="console.log('키가 눌렸습니다!')" />
사용하지 않는 것을 권장 (유지보수와 코드 파싱에 어려움)
3) addEventListener 메서드
✅ 표준 이벤트 모델
HTML 요소에 addEventListener 메서드를 사용하여 이벤트를 등록
한 요소에 여러 개의 이벤트 핸들러 등록 가능
💡 addEventListener()은 인자로 이벤트와 콜백함수를 받음
<button id="myButton">클릭</button>
<script>
const button = document.getElementById('myButton');
// 첫 번째 이벤트 핸들러
button.addEventListener('click', function() {
alert('첫 번째 클릭!');
});
// 두 번째 이벤트 핸들러
button.addEventListener('click', function() {
console.log('두 번째 클릭!');
});
</script>
📌 이벤트 객체
✅ 이벤트 객체는 이벤트 핸들러가 호출될 때 브라우저가 자동으로 생성하여 이벤트 핸들러에게 전달되는 객체로, 다양한 속성과 메서드가 포함됩니다.
🔹 type
이벤트 유형 지정 ('click', 'change' 등)
document.getElementById('btn').addEventListener('click', function(event) {
console.log(event.type); // 'click' 출력
});
🔹 target
이벤트가 발생한 요소를 참조
'실질적'으로 이벤트가 발생한 요소
<ul id="list">
<li>항목 1</li>
<li>항목 2</li>
<li>항목 3</li>
</ul>
<script>
document.getElementById('list').addEventListener('click', function(event) {
console.log(event.target); // 클릭한 <li> 요소 출력
});
</script>
🔹 currentTarget
이벤트 리스너가 실제로 첨부된 요소를 참조
document.getElementById('list').addEventListener('click', function(event) {
console.log('target:', event.target); // 클릭된 요소 (예: <li>)
console.log('currentTarget:', event.currentTarget); // 이벤트 리스너가 부착된 요소 (예: <ul>)
});
🔹 preventDefault()
브라우저가 해당 이벤트에 대해 기본적으로 수행하는 동작을 방지
<a href="https://www.example.com" id="link">이동</a>
<script>
document.getElementById('link').addEventListener('click', function(event) {
event.preventDefault(); // 링크 이동 방지
alert('링크 클릭이 차단되었습니다!');
});
</script>
🔹 stopPropagation()
이벤트가 전파되는 것을 방지
<div id="parent" style="padding: 20px; background-color: lightgray;">
<button id="child">클릭</button>
</div>
<script>
document.getElementById('child').addEventListener('click', function(event) {
event.stopPropagation(); // 부모 요소로의 이벤트 전파 방지
alert('버튼 클릭 이벤트 발생');
});
document.getElementById('parent').addEventListener('click', function() {
alert('부모 div 클릭 이벤트 발생');
});
</script>
📌 이벤트 객체 예시
🔹 마우스 이벤트
마우스의 위치(좌표), 버튼 상태 등
<button id="mouseBtn">클릭</button>
<script>
const btn = document.getElementById('mouseBtn');
btn.addEventListener('click', function(event) {
console.log('클릭 이벤트 발생!');
console.log('마우스 X좌표:', event.clientX); // 화면 기준 X 좌표
console.log('마우스 Y좌표:', event.clientY); // 화면 기준 Y 좌표
console.log('마우스 버튼:', event.button); // 0: 왼쪽, 1: 휠, 2: 오른쪽 버튼
});
</script>
🔹 키보드 이벤트
눌려진 키에 대한 정보를 포함
<input type="text" id="textInput" placeholder="키 입력" />
<script>
const input = document.getElementById('textInput');
input.addEventListener('keydown', function(event) {
console.log('눌린 키:', event.key); // 'a', 'Enter' 등
console.log('키 코드:', event.code); // 'KeyA', 'Enter' 등
console.log('Shift 눌림 여부:', event.shiftKey); // Shift 키 동시 입력 여부
});
</script>
📌 이벤트 객체 사용 방법
이벤트가 발생하는 함수(이벤트 핸들러)에 매개변수로 자동 전달됩니다.
매개변수명은 event, evt, e 등으로 명명하는 것이 권장됩니다.
✅ DOMContentLoaded 이벤트
HTML 문서가 완전히 로드되고 DOM 트리가 완성되었을 때 발생
이미지, CSS, 스크립트 파일이 아직 로드되지 않아도 이벤트 발생
✅ load 이벤트
페이지의 모든 콘텐츠가 완전히 로드된 경우에만 발생
window.addEventListener('load', function() {
console.log('페이지의 모든 콘텐츠가 로드되었습니다.');
});
window.addEventListener('DOMContentLoaded', function() {
console.log('DOM 트리가 완성되었습니다.');
});
위 코드에서 load 이벤트는 모든 콘텐츠가 로드된 후 발생
DOMContentLoaded는 HTML 구조가 준비되었을 때 발생
이를 통해 JS 기능이 DOM을 완전히 인식한 후 동작하도록 설정할 수 있음
🚀js의 이벤트는 typeScrip에서도 자주 보일 예정
'IT > HTML,CSS,JavaScript' 카테고리의 다른 글
[JavaScript] 자바스크립트 기초 복습 part10 (0) | 2025.03.28 |
---|---|
[JavaScript] 자바스크립트 기초 복습 part9 (0) | 2025.03.27 |
[JavaScript] 자바스크립트 기초 복습 part7 (0) | 2025.03.24 |
[JavaScript] 자바스크립트 기초 복습 part6 (0) | 2025.03.23 |
[JavaScript] 자바스크립트 기초 복습 part5 (0) | 2025.03.22 |