5.1 ์ด๋ฒคํธ ์ฒ๋ฆฌ์ ๊ธฐ์ด
JavaScript์ ์ด๋ฒคํธ๋ ์ฌ์ฉ์์ ์ํธ์์ฉํ๊ณ ์ฌ์ฉ์์ ํ๋์ ๋ฐ์ํ๋๋ก ํด์ค. ์๋ฅผ ๋ค์ด ๋ง์ฐ์ค ํด๋ฆญ, ํค๋ณด๋ ์ ๋ ฅ, ํผ์ ๋ณ๊ฒฝ ์ฌํญ ๋ฑ์ด ์์ด. ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ถ๊ฐํ๊ณ ์ ๊ฑฐํ๋ ๋ฐฉ๋ฒ์ ์๋ ๊ฒ์ ์ธํฐ๋ํฐ๋ธ ์น ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์ ์ค์ํ ๋ถ๋ถ์ด์ผ.
์ด๋ฒคํธ๋ ๋ฌด์์ธ๊ฐ?
์ด๋ฒคํธ๋ ๋ธ๋ผ์ฐ์ ์์ "๋ฌด์ธ๊ฐ ๋ฐ์ํ๋ค"๋ผ๊ณ ์๋ ค์ฃผ๋ ์ ํธ์ผ. ์๋ฅผ ๋ค์ด ์ฌ์ฉ์๊ฐ ๋ฒํผ์ ํด๋ฆญํ๊ฑฐ๋ ํ์ด์ง๊ฐ ๋ก๋๋์์ ๋๋ฅผ ๋ง์ด์ผ. ์ด๋ฐ ์ ํธ์ ๋ฐ์ํ์ฌ ํน์ ํ ๋์์ ์ํํ ์ ์์ด.
์ด๋ฒคํธ์ ์ข ๋ฅ
์ด๋ฒคํธ์ ์ข ๋ฅ๋ ๋ค์ํด. ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ๊ฒ๋ค์ ๋ค์๊ณผ ๊ฐ์:
- ๋ง์ฐ์ค:
click
,dblclick
,mouseover
,mouseout
,mousedown
,mouseup
,mousemove
- ํค๋ณด๋:
keydown
,keyup
,keypress
- ํผ:
submit
,change
,focus
,blur
- ๋ฌธ์/์ฐฝ:
load
,resize
,scroll
,unload
์ด๋ฒคํธ ํธ๋ค๋ฌ
์ด๋ฒคํธ ํธ๋ค๋ฌ(๋๋ ์ด๋ฒคํธ ๋ฆฌ์ค๋)๋ ํน์ ์ด๋ฒคํธ์ ๋ฐ์ํ์ฌ ์คํ๋๋ ํจ์์ผ. ์ด๋ฒคํธ๋ฅผ "๋ฃ๊ณ ", ๋ฐ์ํ์ ๋ ์คํ๋ผ.
5.2 ์ด๋ฒคํธ ํธ๋ค๋ฌ ์ถ๊ฐํ๊ธฐ
addEventListener๋ก ์ด๋ฒคํธ ํธ๋ค๋ฌ ์ถ๊ฐํ๊ธฐ
addEventListener
๋ฉ์๋๋ ์์์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ถ๊ฐํ ์ ์๊ฒ ํด์ค. ์ด๊ฑด onclick
, onchange
๊ฐ์ HTML ์์ฑ์ ์ฌ์ฉํ๋ ์ ํต์ ์ธ ๋ฐฉ๋ฒ์ ๋นํด ๋ ์ ์ฐํ๊ณ ๊ฐ๋ ฅํด.
๋ฌธ๋ฒ:
element.addEventListener(event, handler, options);
์ฌ๊ธฐ์:
element
: ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ถ๊ฐํ ์์event
: ๋ฐ์ํ ์ด๋ฒคํธ์ ํ์ (์: 'click', 'input', 'keydown')handler
: ์ด๋ฒคํธ ๋ฐ์ ์ ํธ์ถ๋ ํจ์options
: ์ถ๊ฐ์ ์ธ ์ต์ (์ ํ์ ์ธ์)
์์ : click ์ด๋ฒคํธ ํธ๋ค๋ฌ ์ถ๊ฐ
์ด ์์ ์์๋ ๋ฒํผ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ์ถ๊ฐ๋ผ. ์ฌ์ฉ์๊ฐ ๋ฒํผ์ ํด๋ฆญํ๋ฉด ์๋ฆผ ๋ฉ์์ง๊ฐ ๋จ๊ฒ ๋ผ.
<!DOCTYPE html>
<html>
<head>
<title>Event Example</title>
</head>
<body>
<button id="myButton">Click me</button>
<script>
const button = document.getElementById('myButton');
button.addEventListener('click', function() {
alert('Button clicked!');
});
</script>
</body>
</html>
์์ : ์ฌ๋ฌ ์ด๋ฒคํธ ํธ๋ค๋ฌ ์ถ๊ฐ
addEventListener
๋ฅผ ์ฌ์ฉํ์ฌ ํ๋์ ์ด๋ฒคํธ์ ์ฌ๋ฌ ํธ๋ค๋ฌ๋ฅผ ์ถ๊ฐํ ์ ์์ด.
์ด ์์ ์์๋ ๋ ๊ฐ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ๋ฒํผ์ ์ถ๊ฐ๋ผ. ํด๋ฆญ ์ ๋ ํธ๋ค๋ฌ๊ฐ ์์ฐจ์ ์ผ๋ก ์คํ๋์ด ์ฝ์์ ๊ฐ๊ฐ์ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํด.
<!DOCTYPE html>
<html>
<head>
<title>Event Example</title>
</head>
<body>
<button id="myButton">Click me</button>
<script>
const button = document.getElementById('myButton');
button.addEventListener('click', function() {
console.log('First handler');
});
button.addEventListener('click', function() {
console.log('Second handler');
});
</script>
</body>
</html>
5.3 options ๋งค๊ฐ๋ณ์ ์ฌ์ฉํ๊ธฐ
options
๋งค๊ฐ๋ณ์๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ์ ๋์์ ์กฐ์ ํ ์ ์์ด. ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ์ต์
์:
once
:true
์ผ ๊ฒฝ์ฐ, ํธ๋ค๋ฌ๋ ํ ๋ฒ๋ง ์คํ๋๊ณ ์๋์ผ๋ก ์ ๊ฑฐ๋ผcapture
:true
์ผ ๊ฒฝ์ฐ, ์ด๋ฒคํธ๋ ๋ฒ๋ธ๋ง ๋จ๊ณ ๋์ ์บก์ฒ ๋จ๊ณ์์ ์ฒ๋ฆฌ๋ผpassive
:true
์ผ ๊ฒฝ์ฐ, ํธ๋ค๋ฌ๊ฐpreventDefault()
๋ฅผ ํธ์ถํ์ง ์์ ๊ฒ์ ๋ํ๋ด
์์ : ํ ๋ฒ๋ง ์คํ๋๋ ํธ๋ค๋ฌ
์ด ์์ ์์๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ๋ฑ ํ ๋ฒ๋ง ์คํ๋๊ณ ์๋์ผ๋ก ์ ๊ฑฐ๋ผ.
<!DOCTYPE html>
<html>
<head>
<title>Event Example</title>
</head>
<body>
<button id="myButton">Click me</button>
<script>
const button = document.getElementById('myButton');
button.addEventListener('click', function() {
alert('This will be shown only once');
}, { once: true });
</script>
</body>
</html>
5.4 ์ด๋ฒคํธ ํธ๋ค๋ฌ ์ ๊ฑฐํ๊ธฐ
removeEventListener๋ก ์ด๋ฒคํธ ํธ๋ค๋ฌ ์ ๊ฑฐํ๊ธฐ
removeEventListener
๋ฉ์๋๋ addEventListener
๋ก ์ถ๊ฐ๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ ๊ฑฐํ ์ ์๊ฒ ํด์ค. ํธ๋ค๋ฌ๋ฅผ ์ถ๊ฐํ ๋ ์ฌ์ฉํ ๊ฒ๊ณผ ๋์ผํ ์ธ์๋ฅผ ์ ๋ฌํด์ผ ํด.
๋ฌธ๋ฒ:
element.removeEventListener(event, handler, options)
์ฌ๊ธฐ์:
element
: ์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ์ ๊ฑฐ๋ ์์event
: ํธ๋ค๋ฌ๋ฅผ ์ ๊ฑฐํ ์ด๋ฒคํธ์ ํ์handler
: ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ก ์ง์ ๋ ํจ์options
: ์ถ๊ฐ์ ์ธ ์ต์ (ํธ๋ค๋ฌ ์ถ๊ฐ ์ ์ฌ์ฉํ ๊ฒ๊ณผ ๋์ผํด์ผ ํด)
์์ : click ์ด๋ฒคํธ ํธ๋ค๋ฌ ์ ๊ฑฐ
์ด ์์ ์์๋ click
์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ๋ฒํผ์ ์ถ๊ฐ๋ผ. ๋ค๋ฅธ ๋ฒํผ ํด๋ฆญ ์ click
์ด๋ฒคํธ ํธ๋ค๋ฌ๊ฐ ์ ๊ฑฐ๋ผ.
<!DOCTYPE html>
<html>
<head>
<title>Event Example</title>
</head>
<body>
<button id="myButton">Click me</button>
<button id="removeButton">Remove Click Handler</button>
<script>
const button = document.getElementById('myButton');
const removeButton = document.getElementById('removeButton');
function clickHandler() {
alert('Button clicked!');
}
button.addEventListener('click', clickHandler);
removeButton.addEventListener('click', function() {
button.removeEventListener('click', clickHandler);
alert('Click handler removed');
});
</script>
</body>
</html>
GO TO FULL VERSION