๋ชจ๋ ํฌ์คํ
์ ์ธํ๋ฐ [์ํ์ฝ๋ฉ] ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์์ ๋ด์ฉ์ ๋ด๊ณ ์์ผ๋ฉฐ
์ถ์ฒ๋ ์๋์ ์ฃผ์๋ก "egoing Lee"๋์ ์๋ฃ์
๋๋ค.
์์
์ ์ธ ์๋๊ฐ ์๋ ๊ณต๋ถํ ๊ฒ์ ์ ๋ฆฌํด๋๋ ๋ชฉ์ ์ผ๋ก ํฌ์คํ
ํ ๊ฒ์
๋๋ค.
www.inflearn.com/course/javascript-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EA%B0%95%EC%A2%8C#
์น๋ธ๋ผ์ฐ์ Javascript (์๋ฐ์คํฌ๋ฆฝํธ) - ์ธํ๋ฐ
์ํ์ฝ๋ฉ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ข ์
๋๋ค. ์น๋ธ๋ผ์ฐ์ ๋ฅผ ์ง์ ์ ์ดํ ์ ์๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ ํผ๋ฐ์ค๋ฅผ ๊ณต๋ถํด ๋ด
๋๋ค. ์ด๊ธ ์น ๊ฐ๋ฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด JavaScript ์จ๋ผ์ธ ๊ฐ์ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ข
www.inflearn.com
์ด๋ฒ ํฌ์คํ
์ ๊ฐ์์ "Node๊ฐ์ฒด" ์ค Node๊ฐ์ฒด๊ฐ์์ Node ๊ด๊ณ API ๊ฐ์๋ฅผ ๋ชจ๋ ํฌํจํ์ฌ ์์ฑํ์์ต๋๋ค.
Node ๊ฐ์ฒด
์๊ฐ
Node ๊ฐ์ฒด๋ DOM์์ ์์กฐ์ ๊ฐ์ ์ญํ ์ ํ๋ค. ์ฆ ๊ฐ์ฅ ์ต์์์ ์กฐ์์ ๋งํ๋ค.
๋ค์ ๋งํด์ ๋ชจ๋ DOM ๊ฐ์ฒด๋ Node ๊ฐ์ฒด๋ฅผ ์์ ๋ฐ๋๋ค. Node ๊ฐ์ฒด์ ์์์ ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด๋ฉด ์๋์ ๊ฐ๋ค.
์ฃผ์๊ธฐ๋ฅ
Node ๊ฐ์ฒด์ ์ฃผ์ํ ์๋ฌด๋ ์๋์ ๊ฐ๋ค.
๊ด๊ณ (๊ด๊ณ์ฑ ๋ถ์ฌ)
์๋ฆฌ๋จผํธ๋ ์๋ก ๋ถ๋ชจ, ์์, ํน์ ํ์ ์๋งค ๊ด๊ณ๋ก ์ฐ๊ฒฐ๋์ด ์๋ค. ๊ฐ๊ฐ์ Node๊ฐ ๋ค๋ฅธ Node์ ์ฐ๊ฒฐ๋ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ฃผ๋ API๋ฅผ ํตํด์ ๋ฌธ์๋ฅผ ํ๋ก๊ทธ๋๋ฐ์ ์ผ๋ก ํ์ํ ์ ์๋ค.
- Node.childNodes
- Node.firstChild
- Node.lastChild
- Node.nextSibling
- Node.previousSibling
- Node.contains()
- Node.hasChildNodes()
๋
ธ๋์ ์ข
๋ฅ
Node ๊ฐ์ฒด๋ ๋ชจ๋ ๊ตฌ์ฑ์์๋ฅผ ๋ํํ๋ ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ ๊ฐ๊ฐ์ ๊ตฌ์ฑ์์๊ฐ ์ด๋ค ์นดํ
๊ณ ๋ฆฌ์ ์ํ๋ ๊ฒ์ธ์ง๋ฅผ ์๋ ค์ฃผ๋ ์๋ณ์๋ฅผ ์ ๊ณตํ๋ค.
- Node.nodeType
- Node.nodeName
๊ฐ
Node ๊ฐ์ฒด์ ๊ฐ์ ์ ๊ณตํ๋ API
- Node.nodeValue
- Node.textContent
์์๊ด๋ฆฌ
Node ๊ฐ์ฒด์ ์์์ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ๋ํ API
- Node.appendChild()
- Node.removeChild()
Node ๊ด๊ณ API
Node ๊ฐ์ฒด๋ Node ๊ฐ์ ๊ด๊ณ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ์ผ๋ จ์ API๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ๋ค์์ ๊ด๊ณ์ ๊ด๋ จ๋ ํ๋กํผํฐ๋ค์ด๋ค.
- Node.childNodes
์์๋
ธ๋๋ค์ ์ ์ฌ๋ฐฐ์ด์ ๋ด์์ ๋ฆฌํดํ๋ค.
- Node.firstChild
์ฒซ๋ฒ์งธ ์์๋
ธ๋
- Node.lastChild
๋ง์ง๋ง ์์๋
ธ๋
- Node.nextSibling
๋ค์ ํ์ ๋
ธ๋
- Node.previousSibling
์ด์ ํ์ ๋
ธ๋
์๋๋ ์์ API๋ฅผ ์ด์ฉํด์ ๋ฌธ์๋ฅผ ํ์ํ๋ ๋ชจ์ต์ ๋ณด์ฌ์ค๋ค.
<body id="start">
<ul>
<li><a href="./532">html</a></li>
<li><a href="./533">css</a></li>
<li><a href="./534">JavaScript</a>
<ul>
<li><a href="./535">JavaScript Core</a></li>
<li><a href="./536">DOM</a></li>
<li><a href="./537">BOM</a></li>
</ul>
</li>
</ul>
<script>
var s = document.getElementById('start');
console.log(1, s.firstChild); // #text
var ul = s.firstChild.nextSibling
console.log(2, ul); // ul
console.log(3, ul.nextSibling); // #text
console.log(4, ul.nextSibling.nextSibling); // script
console.log(5, ul.childNodes); //text, li, text, li, text, li, text
console.log(6, ul.childNodes[1]); // li(html)
console.log(7, ul.parentNode); // body
</script>
</body>
๊ฐ์๋ฅผ ๋ณด๋ฉด์ ์ค์ต์ ํ๋ค๋ณด๋ฉด, ์๋์ ๊ฐ์ด text๊ฐ ์ฒซ๋ฒ์งธ ๋
ธ๋๋ก ํ์๋๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ ์ด๋ ๊ณต๋ฐฑ ํน์ ์ค๋ฐ๊ฟ๊ณผ ๊ฐ์ ๋ฌธ์๋ ๋
ธ๋๋ก ์ฒดํฌํ๊ธฐ ๋๋ฌธ์ด๋ค!
์ด text๋ผ๋ ๊ฐ์ฒด๋ Node์ ํ์ ๊ฐ์ฒด์ค CharacterData์ ํ์ ๊ฐ์ฒด์ด๋ฉฐ, ์ด ๋ํ Node์ ๊ฐ์ฒด์ด๋ฏ๋ก Node๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ API๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ .fristChild๋ผ๋ ๊ฐ์ฒด๋ ๊ฐ์ง๊ณ ์๋ค.