2025. 9. 23. 00:37ใFront-end/JavaScript

๋ชฉ์ฐจ
1. ๋ธ๋ผ์ฐ์ ์ด๋ฒคํธ
2. ์์ฃผ ์ฌ์ฉํ๋ DOM ์ด๋ฒคํธ
2-1. ๋ง์ฐ์ค ์ด๋ฒคํธ
2-2. ํผ ์์ ์ด๋ฒคํธ
2-3. ํค๋ณด๋ ์ด๋ฒคํธ
2-4. ๋ฌธ์ ์ด๋ฒคํธ
2-5. css ์ด๋ฒคํธ
3. ์ด๋ฒคํธํธ๋ค๋ฌ
3-1. DOM ํ๋กํผํฐ๋ก ์ด๋ฒคํธ ํธ๋ค๋ฌ ํ ๋น
3-2. ๋ฉ์๋๋ก ์ด๋ฒคํธ ํธ๋ค๋ฌ ํ ๋น
1. ๋ธ๋ผ์ฐ์ ์ด๋ฒคํธ
๋ธ๋ผ์ฐ์ ์์์ ์ด๋ฒคํธ๋ ๋ฌด์ธ๊ฐ ๋ฐ์ํ๋ค๋ ์ ํธ๋ฅผ ๋งํ๋ค.
๋ชจ๋ DOM ๋ ธ๋๋ ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํจ๋ค.
2. ์์ฃผ ์ฌ์ฉํ๋ DOM ์ด๋ฒคํธ
1. ๋ง์ฐ์ค ์ด๋ฒคํธ
| ์ด๋ฒคํธ | ์ค๋ช |
| click | ์์ ์์์ ๋ง์ฐ์ค ์ผ์ชฝ ๋ฒํผ ํด๋ฆญ(tap) |
| contextmenu | ์์ ์์์ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋ฒํผ ํด๋ฆญ |
| mouseover / mouseout |
๋ง์ฐ์ค ์ปค์๋ฅผ ์์ ์๋ก ์์ง์์ ๋ / ์ปค์๊ฐ ์์ ๋ฐ์ผ๋ก ์์ง์์ ๋ |
| mousedown / mouseup |
์์ ์์์ ๋ง์ฐ์ค ์ผ์ชฝ ๋ฒํผ์ ๋๋ฅด๊ณ ์์ ๋ / ๋ง์ฐ์ค ๋ฒํผ์ ๋์ ๋ |
| mousemove | ๋ง์ฐ์ค๋ฅผ ์์ง์ผ ๋ |
2. ํผ ์์ ์ด๋ฒคํธ
| ์ด๋ฒคํธ | ์ค๋ช |
| submit | ์ฌ์ฉ์๊ฐ <form>์ ์ ์ถํ ๋ |
| focus | ์ฌ์ฉ์๊ฐ <input>๊ณผ ๊ฐ์ ์์์ ํฌ์ปค์ค ํ ๋ |
3. ํค๋ณด๋ ์ด๋ฒคํธ
| ์ด๋ฒคํธ | ์ค๋ช |
| keydown / keyup |
์ฌ์ฉ์๊ฐ ํค๋ณด๋ ๋ฒํผ์ ๋๋ฅผ ๋ / ํค๋ณด๋ ๋ฒํผ์ ๋ ๋ |
4. ๋ฌธ์ ์ด๋ฒคํธ
| ์ด๋ฒคํธ | ์ค๋ช |
| DOMContentLoaded | HTML์ด ์ ๋ถ ๋ก๋ ๋ฐ ์ฒ๋ฆฌ๋์ด DOM ์์ฑ์ด ์๋ฃ๋์์ ๋ |
5. CSS ์ด๋ฒคํธ
| ์ด๋ฒคํธ | ์ค๋ช |
| transitionend | CSS ์ ๋๋ฉ์ด์ ์ด ์ข ๋ฃ๋์์ ๋ |
3. ์ด๋ฒคํธ ํธ๋ค๋ฌ
์ด๋ฒคํธ์ ๋ฐ์ํ๊ธฐ ์ํด์๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ์คํ๋๋ ํจ์์ธ ํธ๋ค๋ฌ(handler)๋ฅผ ํ ๋นํด์ผ ํ๋ค.
์ด๋ฒคํธ ํธ๋ค๋ฌ๋ 3๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ํ ๋นํ ์ ์๋ค.
- HTML ์์ฑ : onclick="..."
- DOM ํ๋กํผํฐ : elem.onClick = function
- ๋ฉ์๋ : elem.addEventListener(event, handler[, phase])๋ก ์ถ๊ฐ, removeEventListener๋ก ํธ๋ค๋ฌ ์ ๊ฑฐ
์ด ์ค HTML ์์ฑ์ ์ ์ฌ์ฉํ์ง ์๋๋ค.
HTML ํ๊ทธ ์ค๊ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๋ค์ด๊ฐ๋ฉด ๋ถํธํ๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋ฌ๋๊น ์ผ๋จ ์ ์ธํ๊ณ ์ ๋ฆฌํ๊ฒ ๋ค.
1. DOM ํ๋กํผํฐ๋ก ์ด๋ฒคํธ ํธ๋ค๋ฌ ํ ๋น
DOM ํ๋กํผํฐ on<event>๋ฅผ ์ฌ์ฉํด์ ํธ๋ค๋ฌ๋ฅผ ํ ๋นํ ์ ์๋ค.
<input id="elem" type="button" value="ํด๋ฆญํด์ฃผ์ธ์.">
<script>
elem.onclick = function() {
alert('๊ฐ์ฌํฉ๋๋ค');
};
</script>
์ด ๋์ ๋จ์ ์ onclick ํ๋กํผํฐ๋ ๋จ ํ๋๋ฐ์ ์๊ธฐ ๋๋ฌธ์ ๋ณต์์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ํ ๋นํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
ํธ๋ค๋ฌ๋ฅผ ์ ๊ฑฐํ๊ณ ์ถ๋ค๋ฉด elem.onclick = null๊ณผ ๊ฐ์ด null์ ํ ๋นํ๋ค.
ํธ๋ค๋ฌ ๋ด๋ถ์ ์ฐ์ธ this์ ๊ฐ์ ํธ๋ค๋ฌ๊ฐ ํ ๋น๋ ์์์ด๋ค.
<button onclick="alert(this.innerHTML)">ํด๋ฆญํ์ธ์</button> // ํด๋ฆญํ์ธ์
2. ๋ฉ์๋๋ก ์ด๋ฒคํธ ํธ๋ค๋ฌ ํ ๋น
๋ฒํผ์ ํด๋ฆญํ ๋ ๋ฉ์ธ์ง ๋ณด์ด๊ธฐ + ๋ฒํผ ๊ฐ์กฐํ๊ธฐ ์ด๋ ๊ฒ ๋ ๊ฐ์ง ์ด๋ฒคํธ๋ฅผ ์ฃผ๊ณ ์ถ์ ์๋ ์๋ค.
๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ๋ฌ ๊ฐ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ํ ๋นํ ์ ์๋ค.
element.addEventListener(event, handler, [options]);
element.removeEventListener(event, handler, [options]);
- event : ์ด๋ฒคํธ ์ด๋ฆ
- handler : ํธ๋ค๋ฌ ํจ์
- options : ๋ค์ ํ๋กํผํฐ๋ฅผ ๊ฐ์ง๋ ๊ฐ์ฒด
- once : true์ผ ๊ฒฝ์ฐ ์ด๋ฒคํธ๊ฐ ํธ๋ฆฌ๊ฑฐ๋ ๋ ๋ฆฌ์ค๋๊ฐ ์๋์ผ๋ก ์ญ์ ๋จ
- capture : ์ด๋ ๋จ๊ณ์์ ์ด๋ฒคํธ๋ฅผ ๋ค๋ค์ผํ๋ ์ง ์๋ ค์ค
- passive : true์ผ ๊ฒฝ์ฐ, ๋ฆฌ์ค๋์์ ์ง์ ํ ํจ์๊ฐ preventDefault()๋ฅผ ํธ์ถํ์ง ์์
addEventListener๋ฅผ ์ฌ๋ฌ ๋ฒ ํธ์ถํ๋ฉด ํธ๋ค๋ฌ๋ฅผ ์ฌ๋ฌ ๊ฐ ๋ถ์ผ ์ ์๋ค.
<input id="elem" type="button" value="ํด๋ฆญํด ์ฃผ์ธ์."/>
<script>
function handler1() {
alert('๊ฐ์ฌํฉ๋๋ค!');
};
function handler2() {
alert('๋ค์ ํ๋ฒ ๊ฐ์ฌํฉ๋๋ค!');
}
elem.onclick = () => alert("์๋
ํ์ธ์.");
elem.addEventListener("click", handler1); // ๊ฐ์ฌํฉ๋๋ค!
elem.addEventListener("click", handler2); // ๋ค์ ํ๋ฒ ๊ฐ์ฌํฉ๋๋ค!
</script>
์ฐธ๊ณ
'Front-end > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [WIP]์ด๋ฒคํธ ์์ : ์บก์ฒ๋ง๊ณผ ๋ฒ๋ธ๋ง ํ์ฉํ๊ธฐ (1) | 2025.09.23 |
|---|---|
| ๋ฒ๋ธ๋ง๊ณผ ์บก์ฒ๋ง (0) | 2025.09.23 |
| ๋ธ๋ผ์ฐ์ ์ฐฝ ์ฌ์ด์ฆ์ ์คํฌ๋กค ์ ๋ณด ์ป๊ธฐ (1) | 2025.09.22 |
| ๋ฉ์๋๋ก DOM ์กฐ์ํด์ ๋ฌธ์ ์์ ํ๊ธฐ (0) | 2025.09.22 |
| DOM ๋ ธ๋์ ๋์ํ๋ ํด๋์ค (0) | 2025.09.22 |
GitHub