-
๐ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ Deep Dive | #2 DOM [์์ ๋ ธ๋ ์ ํํ๊ธฐ]TIL 2022. 5. 25. 16:18
์ฉ์ด ์ ๋ฆฌ
- HTMLCollection ๊ฐ์ฒด : ์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด์ด๋ฉด์ ์ดํฐ๋ฌ๋ธ์ด๋ค.
์ธ๋ฑ์ค๋ฅผ ํค ๊ฐ์ผ๋ก ๊ฐ์ง๊ณ ์๊ณ , length๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ๋ฐฐ์ด๊ณผ ๋น์ทํ๊ฒ ์๊ฒผ์ง๋ง ๊ฐ์ฒด์ด๋ค.
- NodeList ๊ฐ์ฒด : ์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด์ด๋ฉด์ ์ดํฐ๋ฌ๋ธ์ด๋ค. forEach ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค.
์์ ๋ ธ๋ ์ทจ๋ํ๊ธฐ
DOM API(ํ๋กํผํฐ, ๋ฉ์๋)๋ฅผ ์ฌ์ฉํ์ฌ html ์ ๋ณ๊ฒฝํ๊ธฐ ์ํด์๋ ์ผ๋จ ๋ณ๊ฒฝํ ๋ ธ๋๋ฅผ ์ ํํ ์ ์์ด์ผ ํ๋ค.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <div class="greeting">Hello</div> </body> </html>
์๋ฅผ ๋ค์ด div ํ๊ทธ ์์ Hello ํ ์คํธ๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ํด์๋ div ์์ ๋ ธ๋์ ์ฐ๊ฒฐ๋ ํ ์คํธ ๋ ธ๋๋ฅผ ๋ณ๊ฒฝํด์ผ ํ๋ค.
์ด๋ฅผ ์ํด DOM์ ์ฌ๋ฌ ๊ฐ์ง ๋ฉ์๋๋ค์ ์ ๊ณตํ๋ค.
1. id๋ฅผ ์ด์ฉํ๊ธฐ
- method : document.getElementById();
- parameter: id (์ฐพ์ผ๋ ค๋ ์์์ id ๊ฐ)
- return : id ์ดํธ๋ฆฌ๋ทฐํธ ๊ฐ์ ๊ฐ๋ ํ๋์ ์์ ๋ ธ๋ | ์ฃผ์ด์ง id ๊ฐ์ด ์๋ค๋ฉด null ๋ฐํ
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <div class="greeting" id="greeting">Hello</div> <script> let $elem = document.getElementById("greeting"); console.log($elem); //<div class="greeting" id="greeting">Hello</div> $elem.textContent = "hi!"; </script> </body> </html>
๋จผ์ ๋ณ๊ฒฝํ ํ ์คํธ ๋ ธ๋์ ์์ ๋ ธ๋๋ฅผ ์ ํํ ํ, ์ ํํ ๋ ธ๋์์.textContent ํ๋กํผํฐ๋ฅผ ์ฌ์ฉํ์ฌ ํ ์คํธ ๋ ธ๋๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค.
2. ํ๊ทธ ์ด๋ฆ์ ์ด์ฉํ๊ธฐ
- method : document.getElementByTagName(names);
- parameter : id (์ฐพ์ผ๋ ค๋ ์์์ ํ๊ทธ ์ด๋ฆ)
- return : ํ๊ทธ ์ด๋ฆ์ ๊ฐ์ง ์ฌ๋ฌ ๊ฐ์ ๋ ธ๋ ๊ฐ์ฒด๊ฐ ๋ด๊ธด HTMLCollection ๊ฐ์ฒด ๋ฐํ | ์๋ค๋ฉด ๋น HTMLCollection ๊ฐ์ฒด ๋ฐํ
div ํ๊ทธ๋ค์ ๊ธ์์์ blue๋ก ๋ฐ๊ฟ๋ณด์.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <div>Hello</div> <div>23</div> <div>read</div> <script> let $elems = document.getElementsByTagName("div"); console.log($elems); //HTMLCollection(3) [div, div, div] /* $elems.forEach((elem) => {elem.style.color = "blue";}); => Uncaught TypeError: $elems.forEach is not a function */ [...$elems].forEach((elem) => {elem.style.color = "blue";}); </script> </body> </html>
๋จผ์ ํ๊ทธ ์ด๋ฆ์ด div์ธ ๋ชจ๋ ๋ ธ๋ ์์๋ค์ $elems ๋ณ์์ ๋ด๋๋ค. ์ฝ์ ์ฐฝ์ ์ฐ์ด๋ณด๋ฉด $elems ๋ณ์ ์์ HTMLCollection ๊ฐ์ฒด๊ฐ ๋ค์ด์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
HTMLCollection์ ์ ์ฌ ๋ฐฐ์ด์ด๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด ๋ฉ์๋์ธ forEach๋ฅผ ์ฌ์ฉํ ์ ์๋ค(์๋ฌ ๋ฐ์).
๋๋ฌธ์ ๋ฐฐ์ด๋ก ๋ณํํ์ฌ forEach๋ฌธ์ ์ฌ์ฉํ ์ ์๋ค.
3. class ์ด์ฉํ๊ธฐ
- method : document.getElementsByClassName(class);
- parameter : class (์ฐพ์ผ๋ ค๋ ์์์ ํด๋์ค ์ด๋ฆ๋ค. ๋์ด์ฐ๊ธฐ๋ก ๊ตฌ๋ถ.)
- return : ํด๋์ค ์ด๋ฆ์ ๊ฐ์ง ์ฌ๋ฌ ๊ฐ์ ๋ ธ๋ ๊ฐ์ฒด๊ฐ ๋ด๊ธด HTMLCollection ๊ฐ์ฒด ๋ฐํ | ์๋ค๋ฉด ๋น HTMLCollection ๊ฐ์ฒด ๋ฐํ
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <div class="greeting">Hello</div> <div class="age">23</div> <div class="hobby">reading</div> <div class="greeting">hi!</div> <script> let $elems = document.getElementsByClassName("greeting"); console.log($elems);//HTMLCollection(2) </script> </body> </html>
4. css ์ ํ์ ์ด์ฉํ๊ธฐ
- method : document.querySelector(selectors);
- parameter : css selector
- return : css ์ ํ์๋ฅผ ๋ง์กฑ์ํค๋ ์ฒซ ๋ฒ์งธ ์์ ๋ ธ๋ | ์๋ค๋ฉด null ๋ฐํ
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <div class="greeting">Hello</div> <div class="age">23</div> <div class="hobby">reading</div> <div class="greeting">hi!</div> <script> let $elem = document.querySelector(".greeting"); $elem.style.color = "blue"; </script> </body> </html>
- method : document.querySelectorAll(selectors);
- parameter : css selectors(์ฝค๋ง๋ก ๊ตฌ๋ถ)
- return : css ์ ํ์๋ฅผ ๋ง์กฑ์ํค๋ ์ฌ๋ฌ ๊ฐ์ ๋ ธ๋ ๊ฐ์ฒด๊ฐ ๋ด๊ธด NodeList ๊ฐ์ฒด | ์๋ค๋ฉด ๋น NodeList ๊ฐ์ฒด ๋ฐํ
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <div>Hello</div> <div>23</div> <div>read</div> <script> let $elems = document.querySelectorAll("div"); console.log($elems); //NodeList(3) [div, div, div] $elems.forEach((elem) => {elem.style.color = "blue";}); </script> </body> </html>
'TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ ํ๋ฒ๊ฑฐ ๋ฒํผ ์ ์ํ๊ธฐ (0) 2022.09.03 ๐ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ Deep Dive | ์ด๋ฒคํธ [์ด๋ฒคํธ ํธ๋ค๋ฌ] (0) 2022.05.26 ๐ ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ Deep Dive | #1 DOM [DOM ์ด๋?] (0) 2022.05.25 20.09.15_TIL (0) 2020.09.15 20.09.13_TIL (1) 2020.09.13