HTMLCollection๊ณผ NodeList
1. ๊ฐ์
DOM ์ปฌ๋ ์
๊ฐ์ฒด์ธ HTMLCollection
๊ณผ NodeList
๋ DOM API๊ฐ ์ฌ๋ฌ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํํ๊ธฐ ์ํ DOM ์ปฌ๋ ์
๊ฐ์ฒด๋ค. HTMLCollection
๊ณผ NodeList
์ด๋ค ํน์ง์ ๊ฐ์ง๊ณ ์์๊น?
๊ณต๋์ ์ผ๋ก ๋ ๋ค ์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด
์ด๋ฉด์ ์ดํฐ๋ฌ๋ธ
์ด๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ for...of
๋ฌธ์ผ๋ก ์ํํ ์ ์์ผ๋ฉฐ ์คํ๋ ๋ ๋ฌธ๋ฒ
์ ์ฌ์ฉํ์ฌ ๊ฐ๋จํ ๋ฐฐ์ด๋ก ๋ณํํ ์ ์๋ค.
2. HTMLCollection
HTMLCollection
๊ฐ์ฒด๋ getElementsByTagName
, getElementsByClassName
๋ฉ์๋๊ฐ ๋ฐํํ๋ ๊ฐ๋ก ์ด์ ์๋(live)
DOM ์ปฌ๋ ์
๊ฐ์ฒด์ด๋ค.
์ด์ ์๋(live)
์ด๋ ๋ป์ ์ดํดํ๊ธฐ ์ํด ์๋์ ์์๋ฅผ ์ดํด๋ณด์.
์์ ๊ฒฐ๊ณผ๋ ์ด๋ป๊ฒ ์์์ด ๋๋๊ฐ? ๋ชจ๋ li ์์๊ฐ ํ๋์์ผ๋ก ๋๋๋ง์ด ๋ ๊ฒ ๊ฐ์ง๋ง ๊ทธ๋ ์ง ์๋ค. ๊ฒฐ๊ณผ๋ ์๋์ ์ฌ์ง๊ณผ ๊ฐ๋ค.
์ด๋ฐ ๊ฒฐ๊ณผ๊ฐ ๋ํ๋๋ ์ด์ ๋ฅผ ์์๋ณด์.
์ฒซ ๋ฒ์งธ ๋ฐ๋ณต๋ฌธ(i === 0) ์ฒซ ๋ฒ์งธ
li
์์์fruit
ํด๋์ค๊ฐblue
ํด๋์ค๋ก ๋ณ๊ฒฝ๋๋ค. ์ด๋ ๋ ์ด์$fruit
์์ ํด๋น ๋ ธ๋ ์์๋ ์ค์๊ฐ์ผ๋ก ์ ๊ฑฐ๋๋ค. ์ด์ฒ๋ผHTMLCollection
๊ฐ์ฒด๋ ์ค์๊ฐ์ผ๋ก ๋ ธ๋ ๊ฐ์ฒด์ ์ํ ๋ณ๊ฒฝ์ ๋ฐ์ํ๋์ด์ ์๋(live)
DOM ์ปฌ๋ ์ ๊ฐ์ฒด์ด๋ค.๋ ๋ฒ์ฌ ๋ฐ๋ณต๋ฌธ(i === 1) ์ฒซ ๋ฒ์งธ ๋ฐ๋ณต์์ ์ฒซ ๋ฒ์งธ
li
์์๋$fruit
์์ ์ ๊ฑฐ๋์๋ค. ๋ฐ๋ผ์$fruit[i]
๋ ์ธ ๋ฒ์งธli
์์์ด๋ค. ์ฆorange
๋ฅผ ํฌํจํli
์์์ ํด๋์ค๊ฐblue
๋ก ๋ณ๊ฒฝ๋๋ค.์ธ ๋ฒ์งธ ๋ฐ๋ณต๋ฌธ(i === 2) ํ์ฌ
$fruit
๊ฐ์ฒด์ 2๊ฐ์ ์์๊ฐ ์๋ค. ์ฆ ์ธ๋ฑ์ค๊ฐ2
์ธ ์์๋ ์์ผ๋ฏ๋กfalse
๊ฐ ๋์ด ๋ฐ๋ณต์ด ์ข ๋ฃ๋๋ค.
์ด๋ฅผ ํด๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ๋ค.
์๋๋ ๊ฐ์ฅ ์ข์ ํด๊ฒฐ์ฑ
์ด๋ค. ์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด์ด๋ฉด์ ์ดํฐ๋ฌ๋ธ์ธ HTMLCollection
๊ฐ์ฒด๋ฅผ ๋ฐฐ์ด๋ก ๋ณํํ์ฌ ํด๊ฒฐํ๋ค.
3. NodeList
HTMLCollection
๊ฐ์ฒด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด querySelectorAll
๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๋ ์๋ค. querySelectorAll
๋ฉ์๋๋ DOM ์ปฌ๋ ์
๊ฐ์ฒด์ธ NodeList
๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค. ์ด ๊ฐ์ฒด๋ ์ค์๊ฐ์ผ๋ก ๋
ธ๋ ๊ฐ์ฒด์ ์ํ ๋ณ๊ฒฝ์ ๋ฐ์ํ์ง ์๋(non-live)
๊ฐ์ฒด์ด๋ค.
NodeList
๊ฐ์ฒด๋ NodeList.prototype.forEach
๋ฉ์๋๋ฅผ ์์๋ฐ์ ์ฌ์ฉํ ์ ์๋ ํธ๋ฆฌํจ์ด ์๋ค.
์ด๋ ๊ฒ NodeList
๊ฐ์ฒด๋ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ๋
ธ๋ ๊ฐ์ฒด์ ์ํ ๋ณ๊ฒฝ์ ์ค์๊ฐ์ผ๋ก ๋ฐ์ํ๊ธฐ ์๊ณ ๊ณผ๊ฑฐ์ ์ ์ ์ํ๋ฅผ ์ ์งํ๋ non-live
๊ฐ์ฒด๋ก ๋์ํ๋ค.
ํ์ง๋ง, ๊ทธ๋๋
HTMLCollection
๊ฐ์ฒด๋NodeList
๊ฐ์ฒด๋ ๋ฐฐ์ด๋ก ๋ณํํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
HTMLCollection
๊ฐ์ฒด์ NodeList
๊ฐ์ฒด๋ ๋ชจ๋ ์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด์ด๋ฉด์ ์ดํฐ๋ฌ๋ธํ๊ธฐ ๋๋ฌธ์ ์คํ๋ ๋ ๋ฌธ๋ฒ์ด๋ Array.from ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋จํ ๋ฐฐ์ด๋ก ๋ณํํ ์ ์๋ค.
4. Conclusion
๊ณผ๊ฑฐ ๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์น ๊ฐ๋ฐ ๊ณต๋ถ๋ฅผ ํ ๋ ๋งํ๋ ๋ถ๋ถ ์ค ํ๋๊ฐ ๋ฐ๋ก
HTMLCollection
๊ฐ์ฒด์NodeList
๊ฐ์ฒด์๋ค. ๊ทธ ๋ ์ ์ฌ ๋ฐฐ์ด ๊ฐ์ฒด, ์ดํฐ๋ฌ๋ธ์ด๋ผ๋ ๊ฐ๋ ์ ์ ์์ง ๋ชปํ๊ณ ๋ํ ๋ฐฐ์ด, ๋ฐฐ์ด ๋ฉ์๋์ ๋ํด์๋ ๊น๊ฒ ์์ง ๋ชปํ์ฌ ์ด๋ป๊ฒ ํ์ฉ์ ํ ์ง ๊ฐ์ด ์กํ์ง ์์์์๋ค. ํ์ง๋ง ์ง๊ธ์ ์ฌ๋ฌ๊ฐ์ ์์ ๋ ธ๋๋ฅผ ๊ด๋ฆฌํด์ผ ํ ์ํฉ์ด ์จ๋ค๋ฉด ์ด๋ ค์, ๊ฑฑ์ ์์ด ์ ํด๊ฒฐํด ๋๊ฐ ์ ์๋ ์์ ๊ฐ์ด ๋ ๋ค.
์ฐธ๊ณ
๋์ - ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ Deep Dive: ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ธฐ๋ณธ ๊ฐ๋ ๊ณผ ๋์ ์๋ฆฌ
๐ 2022-10-11
Last updated