1 ๋ถ„ ์†Œ์š”

๐Ÿ“˜ ์ด๋ฒคํŠธ

์›นํŽ˜์ด์ง€์—์„œ ์–ด๋– ํ•œ ์ƒํ˜ธ์ž‘์šฉ์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, ์ •ํ•ด์ง„ ์‚ฌ๊ฑด์„ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๊ฒƒ์„ ์ด๋ฒคํŠธ๋ผ๊ณ  ํ•œ๋‹ค.

๐Ÿ“– Event ๊ตฌ์„ฑ ์š”์†Œ

  1. ์ด๋ฒคํŠธ ์†Œ์Šค
    • ์ƒํ˜ธ์ž‘์šฉ์ด ๋ฐœ์ƒํ•œ ์œ„์น˜
    • DOM์š”์†Œ(HTML)๊ณผ ๊ด€๋ จ์ด ์žˆ๊ณ , ์ฃผ๋กœ input์ด ์žˆ๋‹ค.
  2. ์ด๋ฒคํŠธ ํด๋ž˜์Šค
    • ์ด๋ฒคํŠธ์˜ ์ข…๋ฅ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
    • click, focus, load, mouseover ๋“ฑ์˜ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค.
  3. ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ
    • ์‚ฌ์šฉ์ž๊ฐ€ ์‹ค์ œ ์ด๋ฒคํŠธ๋ฅผ ๋ฐœ์ƒ์‹œ์ผฐ์„ ๋•Œ, ๊ทธ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ
    • ์ธ๋ผ์ธ ๋ฐฉ์‹
    • ํ”„๋กœํผํ‹ฐ ๋ฐฉ์‹
    • ์ด๋ฒคํŠธ ๊ฐ์ฒด ๋ฐฉ์‹
    • addEventListener

๐Ÿ“– Event Class

1) ๋งˆ์šฐ์Šค ์ด๋ฒคํŠธ

์ด๋ฒคํŠธ ์„ค๋ช…
click ์š”์†Œ์— ๋งˆ์šฐ์Šค ํด๋ฆญ
dbclick ์š”์†Œ์— ๋งˆ์šฐ์Šค ๋”๋ธ” ํด๋ฆญ
mouseover ์š”์†Œ ์œ„์— ๋งˆ์šฐ์Šค ์˜ฌ๋ฆผ
mouseout ์š”์†Œ์—์„œ ๋งˆ์šฐ์Šค๊ฐ€ ๋ฒ—์–ด๋‚ฌ์„ ๋•Œ
mousedown ์š”์†Œ์— ๋งˆ์šฐ์Šค๋ฅผ ๋ˆŒ๋ €์„ ๋•Œ
mouseup ์š”์†Œ์—์„œ ๋งˆ์šฐ์Šค๋ฅผ ๋–ผ์—ˆ์„ ๋•Œ
mousemove ์š”์†Œ์—์„œ ๋งˆ์šฐ์Šค๋ฅผ ์›€์ง์˜€์„ ๋•Œ
contextmenu ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ ๋ˆŒ๋ €์„ ๋•Œ ๋‚˜์˜ค๋Š” ๋ฉ”๋‰ด๊ฐ€ ๋‚˜์˜ค๊ธฐ ์ „ ์ด๋ฒคํŠธ ๋ฐœ์ƒ

2) ํ‚ค๋ณด๋“œ ์ด๋ฒคํŠธ

์ด๋ฒคํŠธ ์„ค๋ช…
keydown ํ‚ค๋ฅผ ๋ˆŒ๋ €์„ ๋•Œ
keyup ํ‚ค๋ฅผ ๋–ผ์—ˆ์„ ๋•Œ
keypress ํ‚ค๋ฅผ ๋ˆ„๋ฅธ ์ƒํƒœ์—์„œ ์ด๋ฒคํŠธ ๋ฐœ์ƒ

3) ํผ ์ด๋ฒคํŠธ

์ด๋ฒคํŠธ ์„ค๋ช…
focus ์š”์†Œ์— ํฌ์ปค์Šค๊ฐ€ ์ด๋™๋˜์—ˆ์„ ๋•Œ
blur ์š”์†Œ์—์„œ ํฌ์ปค์Šค๊ฐ€ ๋ฒ—์–ด๋‚ฌ์„ ๋•Œ
change ์š”์†Œ์˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๋•Œ
submit submit ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ
reset reset ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ
select input์ด๋‚˜ textarea ์š”์†Œ ์•ˆ์˜ ํ…์ŠคํŠธ๋ฅผ ๋“œ๋ž˜๊ทธํ•˜์—ฌ ์„ ํƒํ–ˆ์„ ๋•Œ ์ด๋ฒคํŠธ ๋ฐœ์ƒ

4) ๋กœ๋“œ ๋ฐ ๊ธฐํƒ€ ์ด๋ฒคํŠธ

์ด๋ฒคํŠธ ์„ค๋ช…
load ํŽ˜์ด์ง€์˜ ๋กœ๋”ฉ์ด ์™„๋ฃŒ๋˜์—ˆ์„ ๋•Œ
abort ์ด๋ฏธ์ง€์˜ ๋กœ๋”ฉ์ด ์ค‘๋‹จ๋˜์—ˆ์„ ๋•Œ
unload ํŽ˜์ด์ง€๊ฐ€ ๋‹ค๋ฅธ ๊ณณ์œผ๋กœ ์ด๋™๋  ๋•Œ
resize ์š”์†Œ์— ์‚ฌ์ด์ฆˆ๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๋•Œ
scroll ์Šคํฌ๋กค๋ฐ”๋ฅผ ์›€์ง์˜€์„ ์ด๋ฒคํŠธ ๋ฐœ์ƒ

๐Ÿ“– ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ ๋“ฑ๋ก ๋ฐฉ๋ฒ•

1) ์ธ๋ผ์ธ(inline) ๋ฐฉ์‹

<input type="button" onclick="alert('Hello world');" value="button" />

์ธ๋ผ์ธ ๋ฐฉ์‹์€ ํƒœ๊ทธ์˜ ์†์„ฑ์œผ๋กœ ์ด๋ฒคํŠธ ๊ฐ์ฒด๋ฅผ ๋“ฑ๋กํ•œ๋‹ค.

2) ํ”„๋กœํผํ‹ฐ(property) ๋ฐฉ์‹

<button id='btn'>button</button>
<script>
    var targetBtn = document.getElementById('btn');
    targetBtn.onclick = function(){
        alert('Hello world');
        // ์‹คํ–‰ >> Hello world
    }
</script>

ํ”„๋กœํผํ‹ฐ ๋ฐฉ์‹์€ ํ•ด๋‹นํ•˜๋Š” ์š”์†Œ์˜ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋กœ ์ด๋ฒคํŠธ๋ฅผ ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

3) ์ด๋ฒคํŠธ ๊ฐ์ฒด ๋ฐฉ์‹

<button id='btn'>button</button>
<script>
    var targetBtn = document.getElementById('btn');
    targetBtn.onclick = function(ev){
        alert('Hello world' + ev.target.value);
        // ์‹คํ–‰ >> Hello world button
    }
</script>

์ด๋ฒคํŠธ ๊ฐ์ฒด๋ฅผ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ์˜ ์ธ์ž๋กœ ๋„˜๊ธฐ๋Š” ๋ฐฉ์‹์ธ๋ฐ, ์—ฌ๊ธฐ์„œ ev.target๊ณผ targetBtn์€ ๊ฐ™์€ ํ‘œํ˜„์ด๋ผ๋Š” ๊ฒƒ๋„ ์•Œ์•„๋‘์ž. targetBtn.value๋ฅผ ๋„ฃ์–ด๋„ ๋˜‘๊ฐ™์ด ์ถœ๋ ฅ๋œ๋‹ค.

4) addEventListener(โ€™event classโ€™, handler function(), capture)

<button id='btn'>button</button>
<script>
    var targetBtn = document.getElementById('btn');
	  targetBtn.addEventListener('click', ev=>{
				alert('Hello world' + ev.target.value);
				// ์‹คํ–‰ >> Hello world button
		}, false);
</script>
  • ์ฒซ ๋ฒˆ์งธ ์ธ์ž : ์ด๋ฒคํŠธ ์ข…๋ฅ˜
  • ๋‘ ๋ฒˆ์งธ ์ธ์ž : ์ด๋ฒคํŠธ ๋ฐœ์ƒ ์‹œ์— ํ˜ธ์ถœ๋  ํ•จ์ˆ˜
  • ์„ธ ๋ฒˆ์งธ ์ธ์ž : ์บก์ฒ˜๋ง ์‚ฌ์šฉ ์—ฌ๋ถ€ (default : false)

addEventListener ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ด๋ฒคํŠธ๋ฅผ ์ง€์ •ํ•˜๊ฒŒ ๋˜๋ฉด, ํ•˜๋‚˜์˜ ์ด๋ฒคํŠธ์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ง€์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๊ณ , HTML๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ชจ๋“  DOM์š”์†Œ์— ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜์—ฌ ๊ฐ€์žฅ ๊ถŒ์žฅ๋˜๋Š” ๋ฐฉ์‹์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋˜ํ•œ ์บก์ฒ˜๋ง๊ณผ ๋ฒ„๋ธ”๋ง์„ ์ง€์›ํ•ด์ฃผ๋Š”๋ฐ, ๋‹ค์Œ ํฌ์ŠคํŒ…์—์„œ ๋‹ค๋ฃฐ ์˜ˆ์ •์ด๋‹ค.

์ฐธ๊ณ 


https://jenny-daru.tistory.com/17

https://jhyonhyon.tistory.com/23

ํƒœ๊ทธ:

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ:

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ