๐โโ๏ธ [์๋ฆฌ์ค AI ํธ๋ 4๊ธฐ] #08
DOM๊ณผ ์ด๋ฒคํธ ์๊ฐ
01. DOM์ด๋?
๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ (Document Object Model)
โ ๊ฐ์ฒด ์งํฅ ๋ชจ๋ธ๋ก์จ ๊ตฌ์กฐํ ๋ ๋ฌธ์๋ฅผ ํํํ๋ ๋ฐฉ์
DOM์ ์ข ๋ฅ
-
Core DOM
โ ๋ชจ๋ ๋ฌธ์ ํ์ ์ ์ํ DOM ๋ชจ๋ธ -
HTML DOM
โ HTML ๋ฌธ์๋ฅผ ์ํ DOM ๋ชจ๋ธ
๋ชจ๋ HTML ์์๋ HTML DOM์ ํตํด ์ ๊ทผ ๊ฐ๋ฅ -
XML DOM
โ ๋ฌธ์๋ฅผ ์ํ DOM ๋ชจ๋ธ
DOCUMENT
-
DOCUMENT ๊ฐ์ฒด
โ ์น ํ์ด์ง๋ฅผ ์๋ฏธํ๋ฉฐ, ์น ํ์ด์ง์ ์กด์ฌํ๋ HTML ์์์
์ ๊ทผํ๊ณ ์ ํ ๋๋ ๋ฐ๋์ Document ๊ฐ์ฒด๋ถํฐ ์์ํด์ผ ํ๋ค. -
DOCUMENT ๋ฉ์๋
โ HTML ์์์ ๊ด๋ จ๋ ์์ ์ ๋์์ฃผ๋ ๋ค์ํ ๋ฉ์๋ ์ ๊ณต
HTML ์์์ ์ ํ
HTML ์์์ ์์ฑ
HTML ์ด๋ฒคํธ ํธ๋ค๋ฌ ์ถ๊ฐ
HTML ๊ฐ์ฒด์ ์ ํHTML ์์์ ์ ํ
document.getElementById()
: ์์ด๋์ ์์๋ฅผ ์ ํ
document.getElementsByClassName()
: ํด๋์ค์ ์ํ ์์๋ฅผ ์ ํ
document.getElementByName()
: ํด๋น name ์์ฑ๊ฐ์ ๊ฐ์ง๋ ์์ ์ ํ
document.querySelectorAll()
: ํด๋น ์ ํ์๋ก ์ ํ๋๋ ์์๋ฅผ ๋ชจ๋ ์ ํ
document.querySelector()
: ํด๋น ์ ํ์๋ก ์ ํ๋๋ ์์๋ฅผ ์ ํHTML ์์์ ์์ฑ
document.createElement()
: ์ง์ ๋ HTML ์์๋ฅผ ์์ฑ
document.getElementsByClassName()
: HTML ์ถ๋ ฅ ์คํธ๋ฆผ์ ํตํด ํ ์คํธ๋ฅผ ์ถ๋ ฅ
DOM์ ํธ๋ฆฌ ๊ตฌ์กฐ
02. ์๋ฐ์คํฌ๋ฆฝํธ์ DOM
DOM ์์์ ์ ํ
// HTML <li> ์์๋ฅผ ์ ํ let selectedItem = document.getElementsByTagName("li");
// ์์ด๋๊ฐ "id"์ธ ์์๋ฅผ ์ ํ let selectedItem = document.getElementById("id");
// ํด๋์ค๊ฐ "odd"์ธ ์์๋ฅผ ์ ํ let selectedItem = document.getElementsByClassName("odd");
// name ์์ฑ ๊ฐ์ด "first"์ธ ์์๋ฅผ ์ ํ let selectedItem = document.getElementsByName("first");
DOM ์์์ ์คํ์ผ ๋ณ๊ฒฝ
// ์์๋๊ฐ "even"์ธ ์์๋ฅผ ์ ํ let selectedItem = document.getElementById("even");
// ์ ํ๋ ์์์ ํ ์คํธ ์์์ ๋ณ๊ฒฝ selectedItem.style.color = "purple";
DOM ์์์ ๋ด์ฉ ๋ณ๊ฒฝ
// ์์ด๋๊ฐ "text"์ธ ์์๋ฅผ ์ ํ let str = document.getElementById("text");
// ์ ํ๋ ์์์ ๋ด์ฉ์ ๋ณ๊ฒฝ str.innerHTML = "์์์ ๋ด์ฉ ๋ณ๊ฒฝ";
03. Node ๊ฐ์ฒด
๋ ธ๋(Node) ์ ๋ ธ๋ ํธ๋ฆฌ
HTML DOM์์ ์ ๋ณด๋ฅผ ์ ์ ํ๋ ๊ณ์ธต์ ๋จ์
โ ๋ ธ๋ ํธ๋ฆฌ๋ ๋ ธ๋๋ค์ ์งํฉ์ผ๋ก, ๋ ธ๋ ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ํ๋ธ๋ค.
โ ์๋ฐ์คํฌ๋ฆฝํธ์์๋ HTML DOM์ ์ด์ฉํ์ฌ ๋ ธ๋ ํธ๋ฆฌ์ ํฌํจ๋ ๋ชจ๋ ๋ ธ๋์ ์ ๊ทผํ ์ ์๋ค.
๋ ธ๋ ๊ฐ์ ๊ด๊ณ
โ ๋ ธ๋ํธ๋ฆฌ์ ๋ชจ๋ ๋ ธ๋๋ ์๋ก ๊ณ์ธต์ ๊ด๊ณ๋ฅผ ๋งบ๊ณ ์๋ค.
๋ ธ๋์ ์ข ๋ฅ
-
๋ฌธ์ ๋ ธ๋ (document Node)
โ HTML ๋ฌธ์ ์ ์ฒด๋ฅผ ๋ํ๋ด๋ ์ฝ๋ -
์์ ๋ ธ๋ (element Node)
โ ๋ชจ๋ HTML ์์๋ ์์ ๋ ธ๋์ด๋ค.
์์ฑ ๋ ธ๋๋ฅผ ๊ฐ์ง ์ ์๋ ์ ์ผํ ๋ ธ๋ -
์ฃผ์ ๋ ธ๋ (comment Node)
HTML ๋ฌธ์์ ๋ชจ๋ ์ฃผ์์ ์ฃผ์ ๋ ธ๋์ด๋ค. -
์์ฑ ๋ ธ๋ (attribute Node)
โ ๋ชจ๋ HTML ์์์ ์์ฑ์ ์์ฑ ๋ ธ๋์ด๋ฉฐ, ์์ ๋ ธ๋์ ๊ดํ ์ ๋ณด๋ฅผ ๊ฐ์ง๋ค. ํ์ง๋ง ํด๋น ์์ ๋ ธ๋์ ์์๋ ธ๋ (child node) ์๋ ํฌํจ๋์ง ์๋๋ค. -
ํ ์คํธ ๋ ธ๋ (text Node)
HTML ๋ฌธ์์ ๋ชจ๋ ํ ์คํธ๋ ํ ์คํธ ๋ ธ๋์ด๋ค.
๋ ธ๋์ ๊ฐ
๋ ธ๋์ ๋ํ ์ ๋ณด๋ ๋ค์๊ณผ ๊ฐ์ ํ๋กํผํฐ๋ฅผ ํตํด ์ ๊ทผํ ์ ์๋ค.
nodeName(์ด๋ฆ), nodeValue(๊ฐ), nodeType(ํ์ )// HTML ๋ฌธ์์ ๋ชจ๋ ์์ ๋ ธ๋ ์ค์์ ์ฒซ ๋ฒ์งธ ๋ ธ๋์ ์ด๋ฆ์ ์ ํ document.childNodes[0].nodeName;
// ์์ด๋๊ฐ "heading"์ธ ์์์ ์ฒซ ๋ฒ์งธ ์์ ๋ ธ๋์ ๋ ธ๋๊ฐ์ ์ ํ document.getElementById("heading").firstChild.nodeValue;
// ์์ด๋๊ฐ "heading"์ธ ์์์ ์ฒซ ๋ฒ์งธ ์์ ๋ ธ๋์ ํ์ ์ ์ ํ document.getElementById("heading").firstChild.nodeType;
04. ์ด๋ฒคํธ(Event)
์ด๋ฒคํธ(Event)๋ ?
โ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ ค์ฃผ๋ HTML ์์์ ๋ํ ์ฌ๊ฑด์ ๋ฐ์.
์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ฐ์ํ ์ด๋ฒคํธ์ ๋ฐ์ํ์ฌ ํน์ ๋์์ ์ํํ ์ ์๋ค.
์ด๋ฒคํธ ํ์
๋ฐ์ํ ์ด๋ฒคํธ ์ข ๋ฅ (ํผ, ํค๋ณด๋, HTML DOM, Window ๊ฐ์ฒด ๋ฑ)
// ๋ง์ฐ์ค ํด๋ฆญ ์ด๋ฒคํธ ์์ <p onclick="changeText(this)"> ์ฌ๊ธธ ํด๋ฆญํ์ธ์! </p> <script> function changeText(element) { element.innerHTML = "๋ด์ฉ์ด ๋ฐ๋์์ต๋๋ค"; } </script>
์ด๋ฒคํธ ํธ๋ค๋ฌ
์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ๊ทธ ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํ๋ ํจ์
์ง์ ๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด, ์น ๋ธ๋ผ์ฐ์ ๋ ๊ทธ ์์์
๋ฑ๋ก๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์คํ์ํจ๋ค.// HTML ๋ฌธ์๊ฐ ๋ก๋๋ ๋ ์คํ๋จ. window.onload = function() { //์์ด๋๊ฐ "text"์ธ ์์๋ฅผ ์ ํํจ. let text = document.getElementById("text"); text.innerHTML = "HTML ๋ฌธ์๊ฐ ๋ก๋๋์์ต๋๋ค.";
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐โโ๏ธ [์๋ฆฌ์ค AI ํธ๋ 4๊ธฐ] #08), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@violetwhenisawu/์๋ฆฌ์ค-AI-ํธ๋-4๊ธฐ-08์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค