๋ธŒ๋ผ์šฐ์ € ์ด๋ฒคํŠธ

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>

 

 

 

์ฐธ๊ณ 

๋ฐ˜์‘ํ˜•