HTML ์ด๋ฒคํธ ์ฐ๊ฒฐ(onclick, addEventListener ์ฐจ์ด)
by JiwonDevHTML์์ ์ง์ ์ด๋ฒคํธ๋ฅผ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ
HTML์์๋ ์ด๋ฒคํธ๋ฅผ ์์ฑํ๊ณ , onevent(ex. onclick, onfocus ๋ฑ)์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฉ์๋๋ฅผ ์ฐ๊ฒฐํ์ฌ
HTML-DOM์์ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ํด๋น ์ด๋ฒคํธ์ ๋ฐ์ํ๊ฒ ํ๋ค.
๋๋ ์๋์ ๊ฐ์ด ์ง์ HTML ์์ฑ์ ์ง์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ๋ ์๋ค.
(์ฌ๋ฌ ๊ตฌ๋ฌธ์ผ ๊ฒฝ์ฐ ์ธ๋ฏธ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถํ๋ค.)
<input type="button" value="Press Me" onclick="alert('thanks');">
<form action="processform.action" onsubmit="return validateForm();">
<body onload="startApp()">
JavaScript ์์ ์ด๋ฒคํธ๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ
์๋ฐ์คํฌ๋ฆฝํธ์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก event-driven programming ๋ชจ๋ธ์ ์ฌ์ฉํ๋ค.
์ฝ๊ฒ๋งํด ํด๋น ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ๋ธ๋ผ์ฐ์ ์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์์ฑํ ์ด๋ฒคํธ ๊ด๋ฆฌ ๋ฉ์๋(event handler)๋ฅผ ํธ์ถํ๋ค.
let btn = document.getElementById('btn');
btn.addEventListener('click', function() {
alert('addEventListener-1');
});
๋๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋ ๋ด์์ event handler๋ฅผ DOM์ ์์ฑ์ผ๋ก ํ ๋น๋ ๊ฐ๋ฅํ๋ค.
์ด๋ HTML ์ฝ๋ ์์ ์์ฑ๊ฐ์ผ๋ก ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ๊ณผ ๋์ผํ๋ค.
ํด๋น DOM ์์๋ฅผ ๋ถ๋ฌ์์ ํ๋กํผํฐ(element.value = x) ํํ๋ก ํ ๋นํ๋ฉด ๋๋ค.
document.getElementById('button1').onclick = function(){alert('thanks');};
function startApp(){...}
document.onload = startApp;
๊ทธ๋ผ ์ด ๋์ ์ฐจ์ด๋ ๋ฌด์์ผ๊น?
ใ
var btn = document.getElementById('btn');
btn.onclick = function() {
alert('onclick-1'); // ๋ค์ onclick-2์ ๋ฎ์ด์์์ ธ์ ์คํ๋์ง์์.
}
btn.onclick = function() {
alert('onclick-2'); // ์คํ
}
btn.addEventListener('click', function() {
alert('addEventListener-1'); // ์คํ
});
btn.addEventListener('click', function() {
alert('addEventListener-2'); // ์คํ
});
ํด๋น ์ฝ๋๋ฅผ ์คํ์ํค๋ฉด, ์ด๋ฒคํธ ํธ๋ค๋ฌ (addEventListener)๋ก ์ฐ๊ฒฐํ ๊ฒฝ์ฐ ๋ชจ๋ ์ด๋ฒคํธ๊ฐ ๊ฐ์ฒด๋ก ๊ด๋ฆฌ๋๊ณ ์ฌ๋ฌ๊ฐ๋ฅผ ๋ฑ๋ก ํ ์ ์์ง๋ง, HTML ์์ฑ์ ๋ฑ๋ก(.onclick)ํ๋ ๊ฒฝ์ฐ 1๊ฐ์ง ์์ฑ(์ด๋ฒคํธ)๋ฐ์ ๊ฐ์ง์ง ๋ชปํ๊ธฐ์ ๋ฎ์ด์์์ง๊ฒ๋๋ค.
๊ทธ๋ ๋ค! ๊ทธ๋ฅ addEventListener๋ก ๋ฑ๋กํ๋๊ฒ์ด ๋ง๋ค. .onclick ์ฐ์ง๋ง๋ผ.
๊ทธ๋ผ onclick์ ์ ๋ง๋ค์๋๋ฐ์?
์น์ ์ ์ด์ 1991๋ ์ ๋ฝ์ ์๋ฌผ๋ฆฌํ์ฐ๊ตฌ์(CERN)์์ ํ๋ฒ๋์ค๋ฆฌ๊ฐ ๋์๊ด์ฒ๋ผ ์๋ฃ๋ฅผ ์ฝ๊ฒ ๊ณต์ ํ๊ธฐ ์ํด ๋ง๋ค์ด์ก๋ค. ๊ทธ๋์ ์ด์ฐฝ๊ธฐ์๋ ๊ทธ๋ฅ ํ ์คํธ๋ง ๋ฐ์๋ ผ HTML ๋ฐ์ ์์๋ค.
์ดํ HTML ์ฝ๋๊ฐ ๊ด๋ฆฌํ๊ธฐ ์ด๋ ต๊ณ , ๊ฐํ๋๋๊น ์คํ์ผ์ ๋ฐ๋ก ๋ถ๋ฆฌํด์ (CSS) ์ ์ฅํ๊ธฐ ์์ํ๊ณ
์น ์์์ ์ฌ๋ฌ ์๋น์ค, ๋์์ ๋ง๋ค๊ธฐ์ํด ๊ฐ๋จํ ์คํฌ๋ฆฝํธ(Livescript -> JavaScript)๊ฐ ๋ฐ์ ํ์๊ณ
๊ฐ๊ฐ์ ๋ธ๋ผ์ฐ์ ํ์ฌ๋ผ๋ฆฌ ์ง ๊ผด๋ฆฌ๋ ๋ฌธ๋ฒ์ ์คํฌ๋ฆฝํธ ์ธ์ด(์ด ๋น์์๋ ๊ฐ๋ฐ์ธ์ด๋ผ๊ณ ๋ณด๊ธฐ๋ ํ๋ ์์ค)๋ฅผ ์ฌ์ฉํ๋ค๊ฐ
2008๋ ๊ตฌ๊ธ์ Chrome์ ๋ฑ์ฅ์ผ๋ก ๋ค๋ฅธ ๋ธ๋ผ์ฐ์ ๋ค์ด ๊ฒฝ์์๋๊ฐ ๋์ง์์ ๊ทธ์ ์์ผ ์คํฌ๋ฆฝํธ์ธ์ด์ ํ์ค(ECMA)์ ๋ง๋ค๊ณ , ๋ธ๋ผ์ฐ์ ๋ค์ด ๊ทธ ํ์ค์ ๋ฐ๋ฅด๋ฉฐ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์ง๊ธ๊น์ง ๋ฐ์ ํ๊ฒ ๋์๋ค.
์ฆ, ์์ฝํ๋ฉด
onclick ์ ์น ์ด์ฐฝ๊ธฐ๋ถํฐ (DOM Level-0) ์ง์ํ๋ ๊ธฐ๋ฅ์ด๊ณ
์ดํ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๋ฐ์ ํ๋ฉฐ addEventListener(DOM Level-2)๊ฐ ์๊ฒผ๋ค.
์ฆ ๊ตฌ์๊ธฐ์๋ ์น(IE8 ๋ฒ์ ์ดํ, 2016๋ ๋์ ์ด๋ฏธ ์ง์์ข ๋ฃํ ์๋น์ค) ์์๋ onclick ๋ฐ์ ์ง์ํ์ง ์์๋ค.
์ด๋ฒคํธ ์บก์ณ๋ง, ๋ฒ๋ธ๋ง ๊ฐ์ ์ด๋ฒคํธ ๋ฐฉ์์ ์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์๋๊ฒ addEventListener (event-driven) ๋ฐฉ์์ด๋ค.
๊ทธ๋ฅ .onclick์ ์ฐ์ง๋ง์.
'๐ผFront > HTML&CSS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
HTML # 1 ์์ฃผ ์ฐ๋ ํ๊ทธ (0) | 2021.03.28 |
---|---|
HTML, CSS ๊ธฐ์ด (0) | 2021.03.22 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
JiwonDev
JiwonDev