DOM์์ ์ด๋ฒคํธ ์ฒ๋ฆฌํ๊ธฐ
HTML ํ๊ทธ์์ ์ด๋ฒคํธ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์ฐ๊ฒฐํผ ์๋ ์์ง๋ง ํ๊ทธ์ ์คํฌ๋ฆฝํธ ์์ค๊ฐ ์์ฌ ์์ด์ ๋ณต์กํ ํ๋ก๊ทธ๋จ์๋ ์ ํฉํ์ง ์๋ค.
์ด๋ด ๋ DOM ์์ ์ด๋ฒคํธ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์ฐ๊ฒฐํ๋ฉด HTML ํ๊ทธ์ ์คํฌ๋ฆฝํธ ์์ค๋ฅผ ๋ถ๋ฆฌํ ์ ์๋ค.
์ฌ๊ธฐ์์๋ DOM์ ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ๋ค.
DOM ์์์ ํจ์ ์ง์ ์ฐ๊ฒฐํ๊ธฐ
์ด๋ฒคํธ ์ฒ๋ฆฌ๊ธฐ ํจ์๊ฐ ๊ฐ๋จํ๋ค๋ฉด DOM ์์์ ์ง์ ์ฐ๊ฒฐํ ์ ์๋ค.
์๋ฅผ ๋ค์ด ๋ค์ ์์ ๋ img ์์๋ฅผ ๊ฐ์ ธ์ ๋ณ์์ ์ ์ฅํ ํ onclick์ ์ฌ์ฉํด ๋ณ์์ ์ด๋ฒคํธ ์ฒ๋ฆฌ๊ธฐ(ํจ์)๋ฅผ ์ง์ ์ฐ๊ฒฐํ๋ค.
์ด๋ฏธ์ง๋ฅผ ํด๋ฆญํ๋ฉด ์๋ฆผ ์ฐฝ์ด ๋ํ๋์ง๋ง ์ด๋ฏธ์ง ์ธ์ ๋ค๋ฅธ ๊ณณ์ ํด๋ฆญํ๋ฉด ์คํ๋์ง ์๋๋ค.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>innerText, innerHTML ํ๋กํผํฐ</title>
</head>
<body>
<img src="images/EiffleTower.jpg" alt="ET" id="et">
<script>
var et=document.querySelector("#et")
et.onclick = function(){
alert("์ด๋ฏธ์ง๋ฅผ ํด๋ฆญํ์ต๋๋ค");
}
</script>
</body>
</html>
ํจ์ ์ด๋ฆ์ ์ฌ์ฉํด ์ฐ๊ฒฐํ๊ธฐ
์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ์คํํ ํจ์๋ฅผ ๋ฐ๋ก ์ ์ํด ๋์๋ค๋ฉด ํจ์ ์ด๋ฆ์ ์ฌ์ฉํด ์ฐ๊ฒฐํ ์ ์๋ค.
์ด ๊ฒฝ์ฐ์๋ ํจ์ ์ด๋ฆ ๋ค์์ ๊ดํธ๋ฅผ ์ถ๊ฐํ์ง ์๋๋ค.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>innerText, innerHTML ํ๋กํผํฐ</title>
</head>
<body>
<img src="images/EiffleTower.jpg" alt="ET" id="et">
<script>
var et=document.querySelector("#et")
et.onclick = AlertClick;
function AlertClick(){
alert("์ด๋ฏธ์ง๋ฅผ ํด๋ฆญํ์ต๋๋ค");
}
</script>
</body>
</html>
DOM์ event ๊ฐ์ฒด ์์๋ณด๊ธฐ
DOM์๋ ์ด๋ฒคํธ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ event ๊ฐ์ฒด๊ฐ ์๋ค.
์ด ๊ฐ์ฒด์๋ ์น ๋ฌธ์์์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์์๊ฐ ๋ฌด์์ธ์ง, ์ด๋ค ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋์ง ๋ฑ์ ์ ๋ณด๊ฐ ๋ค์ด์๋ค.
๋ค์์ ์ด๋ฏธ์ง์ ๋ฐ์ํ ์ด๋ฒคํธ์ ์ ํ๊ณผ ์์น๋ฅผ ์๋ฆผ ์ฐฝ์ผ๋ก ๋ณด์ฌ ์ฃผ๋ ์์ ์ด๋ค.
์ฌ๊ธฐ์์ img์์๋ฅผ ํด๋ฆญํ๋ฉด ๊ทธ ์์น๋ฅผ ํ์ธํ๊ธฐ ์ํด event ๊ฐ์ฒด๋ฅผ ํจ์์ ์ธ์๋ก ์ฌ์ฉํ๋ค.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>innerText, innerHTML ํ๋กํผํฐ</title>
</head>
<body>
<img src="images/EiffleTower.jpg" alt="ET" id="et">
<script>
var et=document.querySelector("#et");
et.onclick = function(event) {
alert("์ด๋ฒคํธ ์ ํ: "+event.type + ", ์ด๋ฒคํธ ๋ฐ์ ์์น: " + event.pageX + "," + event.pageY);
}
</script>
</body>
</html>
๋ค์ ํ๋ event ๊ฐ์ฒด์ ์ฃผ์ ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ์ ๋ฆฌํ ๊ฒ์ด๋ค.
๊ตฌ๋ถ | ์ค๋ช | |
ํ๋กํผํฐ | altKey | ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋ Alt๋ฅผ ๋๋ ๋์ง ์ฌ๋ถ๋ฅผ boolean ๊ฐ์ผ๋ก ๋ฐํ |
button | ๋ง์ฐ์ค์์ ๋๋ฅธ ๋ฒํผ์ ํค๊ฐ์ ๋ฐํ | |
charCode | keypress ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋ ์ด๋ค ํค๋ฅผ ๋๋ ๋์ง ์ ๋์ฝ๋ ๊ฐ์ผ๋ก ๋ฐํ | |
clientX | ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๊ฐ๋ก ์์น๋ฅผ ๋ฐํ | |
clientY | ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์ธ๋ก ์์น๋ฅผ ๋ฐํ | |
ctrlKey | ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ Ctrl์ ๋๋ ๋์ง ์ฌ๋ถ๋ฅผ boolean ๊ฐ์ผ๋ก ๋ฐํ | |
pageX | ํ์ฌ ๋ฌธ์ ๊ธฐ์ค์ผ๋ก ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๊ฐ๋ก ์์น๋ฅผ ๋ฐํ | |
pageY | ํ์ฌ ๋ฌธ์ ๊ธฐ์ค์ผ๋ก ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์ธ๋ก ์์น๋ฅผ ๋ฐํ | |
screenX | ํ์ฌ ํ๋ฉด ๊ธฐ์ค์ผ๋ก ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๊ฐ๋ก ์์น๋ฅผ ๋ฐํ | |
screenY | ํ์ฌ ํ๋ฉด ๊ธฐ์ค์ผ๋ก ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์ธ๋ก ์์น๋ฅผ ๋ฐํ | |
shiftKey | ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋ Shift๋ฅผ ๋๋ ๋์ง ์ฌ๋ถ๋ฅผ boolean ๊ฐ์ผ๋ก ๋ฐฏ๋ | |
target | ์ด๋ฒคํธ๊ฐ ์ต์ด๋ก ๋ฐ์ํ ๋์์ ๋ฐํ | |
timeStamp | ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ์๊ฐ์ ๋ฐํ | |
type | ๋ฐ์ํ ์ด๋ฒคํธ ์ด๋ฆ์ ๋ฐํ | |
which | ํค๋ณด๋์ ๊ด๋ จ๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋ ํค์ ์ ๋์ฝ๋๊ฐ์ ๋ฐํ | |
๋ฉ์๋ | preventDefault() | ์ด๋ฒคํธ๋ฅผ ์ทจ์ํ ์ ์๋ ๊ฒฝ์ฐ์ ์ทจ์ |
event ๊ฐ์ฒด์๋ ์ด๋ฒคํธ ์ ๋ณด๋ง ๋ค์ด์๋ค.
๋ง์ฝ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋์์ ์ ๊ทผํ๋ ค๋ฉด ์ด๋ฒคํธ ์ฒ๋ฆฌ๊ธฐ์์ ์์ฝ์ด this๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
๋ค์ ์์ ์ฒ๋ผ ํด๋ฆญํ ์ด๋ฏธ์ง์ ํ์ผ ๊ฒฝ๋ก๋ฅผ ์๊ณ ์ถ๋ค๋ฉด this.src๋ฅผ ์ฌ์ฉํ๋ค.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>innerText, innerHTML ํ๋กํผํฐ</title>
</head>
<body>
<img src="images/EiffleTower.jpg" alt="ET" id="et">
<script>
var et=document.querySelector("#et");
et.onclick = function(event) {
alert("ํด๋ฆญํ ์ด๋ฏธ์ง ํ์ผ : " + this.src);
}
</script>
</body>
</html>
addEventListener() ๋ฉ์๋ ์ฌ์ฉํ๊ธฐ
์ง๊ธ๊น์ง ์ดํด๋ณธ ์ด๋ฒคํธ ์ฒ๋ฆฌ๊ธฐ๋ ํ ์์์ ํ๋์ ์ด๋ฒคํธ ์ฒ๋ฆฌ๊ธฐ๋ง์ ์ฐ๊ฒฐํ ์ ์๋ค.
ํ์ง๋ง ๋ค์๊ณผ ๊ฐ์ด addEventListener() ๋ฉ์๋์ event ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ฉด ํ ์์์ ์ฌ๋ฌ ์ด๋ฒคํธ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์ฐ๊ฒฐํด ์คํํ ์ ์๋ค.
addEventListener()๋ฉ์๋๋ ๋์ ์ธ๋ฏธ์ฝ๋ก ์ ๊ผญ ๋ถ์ฌ์ผ ํ๋ค.
์์.addEventListner(์ด๋ฒคํธ, ํจ์, ์บก์ฒ ์ฌ๋ถ);
1. ์ด๋ฒคํธ: ์ด๋ฒคํธ ์ ํ์ ์ง์ ํ๋ค. ๋จ click๊ณผ keypress์ฒ๋ผ on์ ๋ถ์ด์ง ์๊ณ ์ด๋ค.
2. ํจ์: ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ์คํํ ๋ช ๋ น์ด๋ ํจ์๋ฅผ ์ง์ ํ๋ค. ์ฌ๊ธฐ์์ ํจ์๋ฅผ ์ ์ํ ๋๋ event ๊ฐ์ฒด๋ฅผ ์ธ์๋ก ๋ฐ๋๋ค.
3. ์บก์ฒ ์ฌ๋ถ: ์ด๋ฒคํธ๋ฅผ ์บก์ฒํ๋์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ฉฐ ๊ธฐ๋ณธ๊ฐ์ false์ด๊ณ true์ false ์ค์์ ์ ํํ ์ ์๋ค. ture์ด๋ฉด ์บก์ฒ๋ง, false์ด๋ฉด ๋ฒ๋ธ๋งํ๋ค๋ ์๋ฏธ์ด๋ค. ์ด๋ฒคํธ ์บก์ฒ๋ง์ DOM์ ๋ถ๋ชจ ๋ ธ๋์์ ์์ ๋ ธ๋๋ก ์ ๋ฌ๋๋ ๊ฒ์ด๊ณ , ์ด๋ฒคํธ ๋ฒ๋ธ๋ง์ DOM์ ์์ ๋ ธ๋์์ ๋ถ๋ชจ ๋ ธ๋๋ก ์ ๋ฌ๋๋ ๊ฒ์ด๋ค.
๋ค์์ ์ด๋ฏธ์ง ์๋ก ๋ง์ฐ์ค ํฌ์ธํฐ๋ฅผ ์ฌ๋ ค๋์ผ๋ฉด ๋ค๋ฅธ ์ด๋ฏธ์ง๋ก ๋ฐ๋์๋ค๊ฐ ๋ด๋ ค๋์ผ๋ฉด ๋ค์ ์๋ ์ด๋ฏธ์ง๋ก ๋์์ค๋ ์์ ์ด๋ค.
addEventListener() ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ changePic()ํจ์์ originPic() ํจ์๋ฅผ ์ด๋ฒคํธ ์ฒ๋ฆฌ๊ธฐ๋ก ์ฌ์ฉํ๋ค.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>innerText, innerHTML ํ๋กํผํฐ</title>
</head>
<body>
<img src="images/EiffleTower.jpg" alt="ET" id="et">
<script>
var et=document.querySelector("#et");
et.addEventListener("mouseover",ChangePic);
et.addEventListener("mouseout",OriginPic);
function ChangePic(event) {
this.src="images/Lewis.png"
}
function OriginPic(event) {
this.src="images/EiffleTower.jpg"
}
</script>
</body>
</html>
์ด ์์ ์์๋ ์ด๋ฒคํธ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ํจ์๋ก ๋ฐ๋ก ์ ์ธํ์ฌ ์ฌ์ฉํ์ผ๋, ํ๋ฒ ์ฐ๊ณ ๋ง ํจ์๋ผ๋ฉด ๋ณดํต์ ๋ฉ์๋ ์์์ ํจ์ ํํ์์ผ๋ก ์ฌ์ฉํ๋ค.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>innerText, innerHTML ํ๋กํผํฐ</title>
</head>
<body>
<img src="images/EiffleTower.jpg" alt="ET" id="et">
<script>
var et=document.querySelector("#et");
et.addEventListener("mouseover",function(event) {
this.src="images/Lewis.png"
});
et.addEventListener("mouseout",function(event) {
this.src="images/EiffleTower.jpg"
});
</script>
</body>
</html>
CSS ์์ฑ์ ์ ๊ทผํ๊ธฐ
์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํ๋ฉด ์คํ์ผ ์์ฑ๊ฐ์ ๊ฐ์ ธ์์ ๊ทธ ๊ฐ์ ์ํ๋ ๋๋ก ์์ ํ ์ ์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์๋ ๊ฐ ์์์ ์คํ์ผ์ ์์ ๋กญ๊ฒ ์์ ํ ์ ์์ผ๋ฏ๋ก ์น ๋ฌธ์์์ ๋ค์ํ ํจ๊ณผ๋ฅผ ๋ง๋ค ์ ์๋ค.
CSS ์์ฑ์ ์ ๊ทผํ๋ ค๋ฉด ํด๋น ์คํ์ผ์ด ์ ์ฉ๋ HTML ์์ ๋ค์์ ์์ฝ์ด style์ ์ฐ๊ณ ์์ฑ์ ์ ๋๋ค.
document.์์๋ช
.style.์์ฑ๋ช
์๋ฅผ ๋ค์ด id๊ฐ desc์ธ ์์์ ๊ธ์๋ฅผ ํ๋์์ผ๋ก ๋ณ๊ฒฝํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ค.
document.getElementById("desc").style.color = "blue";
์ด๋ ๊ฒ color์ฒ๋ผ ํ ๋จ์ด์ธ ์์ฑ๋ช ์ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฉด ๋์ง๋ง background-color, border-radius์ฒ๋ผ ์ค๊ฐ์ ํ์ดํ์ด ์๋ ์์ฑ์ backgroundColor๋ borderRadius์ฒ๋ผ ๋ ๋จ์ด๋ฅผ ํฉ์ณ์ ์ฌ์ฉํ๋ค.
์ด๋ ๋ ๋ฒ์งธ ๋จ์ด์ ์ฒซ ๊ธ์๋ Color์ Radius์ฒ๋ผ ๋๋ฌธ์๋ก ํ์ํ๋ค.
+form ์์์ ์ ๊ทผํ๋ ํน๋ณํ ํ๋กํผํฐ์ ๋ฉ์๋
input๊ณผ ๊ฐ์ form ์์์ ์ฝ๊ฒ ์ ๊ทผํ๊ธฐ ์ํด DOM์ ํน๋ณํ ํ๋กํผํฐ์ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค.
element = document.forms.nameOfElement
์์ ๊ธฐ๋ณธํ์ nameOfElement์ ์ ๊ทผํ๊ณ ์ ํ๋ ํผ ์์์ name ์์ฑ๊ฐ์ ๋ฃ์ด์ฃผ๋ฉด ํผ ์์์ ๋ฐ๋ก ์ ๊ทผํ ์ ์๋ค.
ํ๊ทธ ๊ตฌ์กฐ๋ class, id ์์ฑ์ ๊ฑฐ์น์ง ์๊ณ ์ค์ง name์ผ๋ก๋ง ํผ ์์์ ์ ๊ทผํ ์ ์๋ค๋ ์ ์์ ๊ฐํธํ๊ฒ ์ฐ์ผ ์ ์๋ค.
์์ธํ ๋ด์ฉ์ ๋ค์ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์.
https://ko.javascript.info/form-elements