DOM&๊ฐ€์ ธ์˜ค๊ธฐ๐ŸŸ๐ŸŽฃ

์ด์ง€์„ ยท2021๋…„ 7์›” 12์ผ
1

JavaScript

๋ชฉ๋ก ๋ณด๊ธฐ
4/8
post-custom-banner

DOM์ด๋ž€?(MDN)

๋ฌธ์„œ ๊ฐ์ฒด ๋ชจ๋ธ(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 ๊ฐ์ฒด๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์ž.

1.getElementById

ID ๊ฐ’์„ ํ†ตํ•˜์—ฌ ์ž๋ฐ”์Šค๋ฆฝํŠธ ๊ฐ์ฒด๋ฅผ ๊ฐ€์ง€๊ณ  ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

<ul>
   <li id = "red">Red</li>
</ul>

๐Ÿ‘‡

const red = document.getElementById("red");

id๊ฐ’์€ ๊ณ ์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์›ํ•˜๋Š” HTML๊ฐ’์„ ํ•˜๋‚˜๋งŒ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์„ ๋•Œ ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค.

2. getElementsByClassName

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[]์ด๋ผ๋Š” ์œ ์‚ฌ ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜๋˜๋Š”๋ฐ ์ด ๋•Œ, ๋ฐฐ์—ด์˜ ์ˆœ์„œ ์ค‘ ์›ํ•˜๋Š” ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๋กœ ๋ถˆ๋Ÿฌ์™€์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

3.querySelector

์ œ๊ณตํ•œ ์„ ํƒ์ž ๋˜๋Š” ์„ ํƒ์ž ๋ญ‰์น˜์™€ ์ผ์น˜ํ•˜๋Š” ๋ฌธ์„œ ๋‚ด ์ฒซ ๋ฒˆ์งธ Element๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

document.querySelector(selectors);

selectors์ž๋ฆฌ์— id๋ช… class๋ช… tag์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

4.querySelectorAll

์ง€์ •๋œ ์…€๋ ‰ํ„ฐ ๊ทธ๋ฃน์— ์ผ์น˜ํ•˜๋Š” ๋‹คํ๋จผํŠธ์˜ ์—˜๋ฆฌ๋จผํŠธ ๋ฆฌ์ŠคํŠธ๋ฅผ (NodeList) ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋ฌธ์„œ ๋‚ด์— ์žˆ๋Š” ์กฐ๊ฑด์— ๋งž๋Š” ๋ชจ๋“  ๊ฐ์ฒด๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

elementList = parentNode.querySelectorAll(selectors);

selectors์ž๋ฆฌ์— id๋ช… class๋ช… tag์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

์—ฌ๊ธฐ์„œ ๊ถ๊ธˆ์ฆ! ๐Ÿค”
์—ฌ๋Ÿฌ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์˜ค๋Š” getElementsByClassName์™€ querySelectorAll์„ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด์ž.

๋‘ ๋ฉ”์†Œ๋“œ๋Š” ๊ฐ ๊ฐ HTMLCollection๊ณผ NodeList๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š”๋ฐ ์–ด๋–ค ์ฐจ์ด์ผ๊นŒ? ๋น„๊ตํ•ด ๋ณด๋„๋ก ํ•˜์ž.

์šฐ์„  ๋‘˜ ๋‹ค length ์†์„ฑ์ด ์žˆ๊ณ  ์ˆซ์ž ์ธ๋ฑ์‹ฑ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

HTMLCollection๋Š” forEach๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
NodeList๋Š” forEach๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค

์งง๊ฒŒ๋‚˜๋งˆ DOM๊ณผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์•Œ์•„๋ณด์•˜๋‹ค.
ํ—ท๊ฐˆ๋ฆด ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์ด ์žˆ์œผ๋‹ˆ ์ž˜ ์ˆ™์ง€ํ•˜๋„๋ก ํ•˜์ž!๐Ÿ‘

profile
๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป
post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€