์ด๋ฒคํธ ๋ฐ์ธ๋ฉ์ ๋ฐ์ํ๋ ์ด๋ฒคํธ์ ๊ทธ ํ์ ์ด๋ค ์ผ์ด ์ผ์ด๋๋์ง๋ฅผ ์๋ ค์ฃผ๋ ์ฝ๋ฐฑ ํจ์๋ฅผ ์ฐ๊ฒฐํด์ฃผ๋ ๊ฒ์ ๋งํฉ๋๋ค. ์ด๋ฒคํธ ๋ฐ์ธ๋ฉ์ด๋ ์ด 3๊ฐ์ง ๋ฐฉ๋ฒ์ด ์๋๋ฐ, HTML์ด๋ฒคํธ ํธ๋ค๋ฌ, ์ ํต์ ์ธ DOMํธ๋ค๋ฌ, EventListener์ ์ด์ฉํ ํธ๋ค๋ฌ๊ฐ์์ต๋๋ค.
HTML ์ด๋ฒคํธ ํธ๋ค๋ฌ
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>HTML Event Handler Example</title> <style> button { padding: 10px 20px; font-size: 16px; cursor: pointer; } </style> </head> <body> <!-- HTML ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒํผ์ ์ง์ ์ด๋ฒคํธ๋ฅผ ํ ๋นํฉ๋๋ค. --> <button onclick="handleClick()">Click me</button> <script> // ์ด๋ฒคํธ ํธ๋ค๋ฌ ํจ์๋ฅผ ์ ์ํฉ๋๋ค. function handleClick() { console.log('Button clicked!'); } </script> </body> </html>
์ด ์์ ๋ ๋ฒํผ์ ํด๋ฆญํ ๋๋ง๋ค ์ฝ์์ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๋ HTML ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ณด์ฌ์ค๋๋ค. ์ฌ๊ธฐ์๋ ๋ฒํผ ์์์ onclick ์์ฑ์ ์ฌ์ฉํ์ฌ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ฐ๋ก ์ง์ ํฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ HTML๊ณผ JavaScript๊ฐ ํผ์ฉ๋๋ ๋ฌธ์ ๊ฐ ์์ผ๋ฉฐ, ์ถ์ฒ๋๋ ๋ฐฉ๋ฒ์ ์๋๋๋ค. ๋์ JavaScript ์ฝ๋์์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ฐ์ธ๋ฉํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ๊ถ์ฅ๋ฉ๋๋ค.
์ ํต์ ์ธ DOM ํธ๋ค๋ฌ
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>DOM Event Handler Example</title> <style> button { padding: 10px 20px; font-size: 16px; cursor: pointer; } </style> </head> <body> <!-- DOM ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒํผ์ ์ด๋ฒคํธ๋ฅผ ํ ๋นํฉ๋๋ค. --> <button id="myButton">Click me</button> <script> // ๋์ ์์๋ฅผ ๊ฐ์ ธ์ต๋๋ค. const myButton = document.getElementById('myButton'); // ์ด๋ฒคํธ ํธ๋ค๋ฌ ํจ์๋ฅผ ์ ์ํฉ๋๋ค. function handleClick(event) { console.log('Button clicked!'); console.log('Event:', event); } // DOM ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฒคํธ๋ฅผ ๋ฐ์ธ๋ฉํฉ๋๋ค. myButton.onclick = handleClick; </script> </body> </html>
์ด ์์ ๋ ๋ฒํผ์ ํด๋ฆญํ ๋๋ง๋ค ์ฝ์์ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๋ ์ ํต์ ์ธ DOM ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ณด์ฌ์ค๋๋ค. ์ฌ๊ธฐ์๋ ๋ฒํผ ์์์ onclick ์์ฑ์ ํจ์๋ฅผ ํ ๋นํ์ฌ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ง์ ํฉ๋๋ค. ์ด ๋ฐฉ๋ฒ์ HTML ์ด๋ฒคํธ ํธ๋ค๋ฌ์ ๋ฌ๋ฆฌ JavaScript ์ฝ๋๋ก ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ฐ์ธ๋ฉํ๋ฏ๋ก HTML๊ณผ JavaScript์ ํผ์ฉ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค. ๊ทธ๋ฌ๋ ํ๋์ ์ด๋ฒคํธ์ ํ๋์ ํธ๋ค๋ฌ๋ง ํ ๋นํ ์ ์๊ณ , ํธ๋ค๋ฌ์ ์ธ์๋ฅผ ์ ๋ฌํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ๋ฉฐ, ์ฌ๋ฌ ๊ฐ์ ํธ๋ค๋ฌ๊ฐ ํ ๋น๋ ๊ฒฝ์ฐ ๋ง์ง๋ง์ ์ถ๊ฐ๋ ํธ๋ค๋ฌ๋ง ์คํ๋ฉ๋๋ค.
EventListener์ ์ด์ฉํ ํธ๋ค๋ฌ
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Event Binding Example</title> <style> button { padding: 10px 20px; font-size: 16px; cursor: pointer; } </style> </head> <body> <button id="myButton">Click me</button> <script> // ๋์ ์์๋ฅผ ๊ฐ์ ธ์ต๋๋ค. const myButton = document.getElementById('myButton'); // ์ฝ๋ฐฑ ํจ์๋ฅผ ์ ์ํฉ๋๋ค. function handleClick(event) { console.log('Button clicked!'); console.log('Event:', event); } function handleAnotherClick(event) { console.log('Another button clicked!'); console.log('Event:', event); } // addEventListener๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฒคํธ๋ฅผ ๋ฐ์ธ๋ฉํฉ๋๋ค. myButton.addEventListener('click', handleClick); myButton.addEventListener('click', handleAnotherClick); // ์ด๋ฒคํธ๋ฅผ ์บก์ณ๋งํ๋ ํธ๋ค๋ฌ๋ฅผ ์ถ๊ฐํ ์๋ ์์ต๋๋ค. myButton.addEventListener('click', function(event) { console.log('Capturing event...'); }, true); // ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ ๊ฑฐํ ์๋ ์์ต๋๋ค. // myButton.removeEventListener('click', handleClick); // ๋ค์์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. // ๋ค์ ์ฝ๋๋ ์์ ์ฝ๋์ ๋์ผํ ํจ๊ณผ๋ฅผ ๋ ๋๋ค. // myButton.onclick = handleClick; // myButton.onclick = handleAnotherClick; </script> </body> </html>
์ด ์์ ๋ ๋ฒํผ์ ํด๋ฆญํ ๋๋ง๋ค ์ฝ์์ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๋ ๊ฐ๋จํ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ณด์ฌ์ค๋๋ค. ์ฌ๊ธฐ์ addEventListener๋ฅผ ์ฌ์ฉํ์ฌ ์ด๋ฒคํธ๋ฅผ ๋ฐ์ธ๋ฉํ๊ณ , ํ๋์ ์ด๋ฒคํธ์ ์ฌ๋ฌ ๊ฐ์ ํธ๋ค๋ฌ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. ์บก์ณ๋ง๊ณผ ๋ฒ๋ธ๋ง์ ์ง์ํ๋ฉฐ, HTML๋ฟ๋ง ์๋๋ผ DOM ์์์๋ ์ ์ฉ๋ฉ๋๋ค.