๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ(The Document Object Model, ์ดํ DOM) ์ HTML, XML ๋ฌธ์์ ํ๋ก๊ทธ๋๋ฐ interface ์ด๋ค. DOM์ ๋ฌธ์์ ๊ตฌ์กฐํ๋ ํํ(structured representation)์ ์ ๊ณตํ๋ฉฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ DOM ๊ตฌ์กฐ์ ์ ๊ทผํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ฌ ๊ทธ๋ค์ด ๋ฌธ์ ๊ตฌ์กฐ, ์คํ์ผ, ๋ด์ฉ ๋ฑ์ ๋ณ๊ฒฝํ ์ ์๊ฒ ๋๋๋ค. DOM ์ ๊ตฌ์กฐํ๋ nodes์ property ์ method ๋ฅผ ๊ฐ๊ณ ์๋ objects๋ก ๋ฌธ์๋ฅผ ํํํ๋ค. ์ด๋ค์ ์น ํ์ด์ง๋ฅผ ์คํฌ๋ฆฝํธ ๋๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ค์์ ์ฌ์ฉ๋ ์ ์๊ฒ ์ฐ๊ฒฐ์์ผ์ฃผ๋ ์ญํ ์ ๋ด๋นํ๋ค.
๋์ ํด์
ํ์ด์ง ๋ด์์์ interaction์ ์ํด HTML,CSS,JS์ ์ฐ๊ฒฐํ๊ธฐ ์ํ ์ญํ
์ด ๋, HTML์ ๊ณ์ธตํ ์ํค๋ฉด ํธ๋ฆฌ๊ตฌ์กฐ๋ฅผ ๊ฐ๊ฒ๋๊ณ ์ด๋ฅผ ํํํ๊ธฐ์ object ํํ๊ฐ ์ ์ ํ์ฌ object์ ํํ๋ก ํํ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด DOM ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ ์์๋ณด์.
ID ๊ฐ์ ํตํ์ฌ ์๋ฐ์ค๋ฆฝํธ ๊ฐ์ฒด๋ฅผ ๊ฐ์ง๊ณ ์ฌ ์ ์์ต๋๋ค.
<ul>
<li id = "red">Red</li>
</ul>
๐
const red = document.getElementById("red");
id๊ฐ์ ๊ณ ์ ํ๊ธฐ ๋๋ฌธ์ ์ํ๋ HTML๊ฐ์ ํ๋๋ง ๊ฐ์ ธ์ค๊ณ ์ถ์ ๋ ์ฉ์ดํฉ๋๋ค.
class ๊ฐ์ ํตํ์ฌ ์๋ฐ์ค๋ฆฝํธ ๊ฐ์ฒด๋ฅผ ๊ฐ์ง๊ณ ์ฌ ์ ์์ต๋๋ค.
<ul>
<li id = "red">Red</li>
<li class = "yellow">yellow</li>
<li class = "yellow">yellow</li>
<li class = "yellow">yellow</li>
</ul>
๐
const yellow = document.getElementsByClassName("yellow")[0];
getElementsByClassName
ํจ์๋ก yellow๋ผ๋ class ์ด๋ฆ์ด ์๋ ์์๋ฅผ ์ฐพ์ต๋๋ค.
[0]๋ฅผ ๋ถ์ธ ์ด์ ๋ getElementsByClassName
์ฌ์ฉ์ ๊ฐ์ class๊ฐ์ ๊ฐ์ง ํ๊ทธ๋ค์ด HTML collection[]์ด๋ผ๋ ์ ์ฌ ๋ฐฐ์ด๋ก ๋ฐํ๋๋๋ฐ ์ด ๋, ๋ฐฐ์ด์ ์์ ์ค ์ํ๋ ์ธ๋ฑ์ค ๋ฒํธ๋ก ๋ถ๋ฌ์์ ์ฌ์ฉํ ์ ์๋ค.
์ ๊ณตํ ์ ํ์ ๋๋ ์ ํ์ ๋ญ์น์ ์ผ์นํ๋ ๋ฌธ์ ๋ด ์ฒซ ๋ฒ์งธ Element๋ฅผ ๋ฐํํฉ๋๋ค.
document.querySelector(selectors);
selectors์๋ฆฌ์ id๋ช class๋ช tag์ด ๋ค์ด๊ฐ ์ ์๋ค.
์ง์ ๋ ์ ๋ ํฐ ๊ทธ๋ฃน์ ์ผ์นํ๋ ๋คํ๋จผํธ์ ์๋ฆฌ๋จผํธ ๋ฆฌ์คํธ๋ฅผ (NodeList) ๋ฐํํฉ๋๋ค. ์ฆ, ๋ฌธ์ ๋ด์ ์๋ ์กฐ๊ฑด์ ๋ง๋ ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
elementList = parentNode.querySelectorAll(selectors);
selectors์๋ฆฌ์ id๋ช class๋ช tag์ด ๋ค์ด๊ฐ ์ ์๋ค.
์ฌ๊ธฐ์ ๊ถ๊ธ์ฆ! ๐ค
์ฌ๋ฌ ๊ฐ์ ๊ฐ์ง๊ณ ์ค๋ getElementsByClassName์ querySelectorAll์ ๋ ์์ธํ ์์๋ณด์.
๋ ๋ฉ์๋๋ ๊ฐ ๊ฐ HTMLCollection๊ณผ NodeList๋ฅผ ๋ฐํํ๋๋ฐ ์ด๋ค ์ฐจ์ด์ผ๊น? ๋น๊ตํด ๋ณด๋๋ก ํ์.
์ฐ์ ๋ ๋ค length ์์ฑ์ด ์๊ณ ์ซ์ ์ธ๋ฑ์ฑ์ ํ ์ ์๋ค.
HTMLCollection๋ forEach๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
NodeList๋ forEach๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค
์งง๊ฒ๋๋ง DOM๊ณผ ๊ฐ์ ธ์ฌ ์ ์๋ ๋ฉ์๋๋ฅผ ์์๋ณด์๋ค.
ํท๊ฐ๋ฆด ์ ์๋ ๋ถ๋ถ์ด ์์ผ๋ ์ ์์งํ๋๋ก ํ์!๐