DOM
DOM(Document Object Model)μ HTML λ¬Έμμ κ³μΈ΅μ ꡬ쑰μ μ 보λ₯Ό νννλ©° μ΄λ₯Ό μ μ΄ν μ μλ API μ¦, νλ‘νΌν°μ λ©μλλ₯Ό μ 곡νλ νΈλ¦¬ μλ£κ΅¬μ‘° μ΄λ€.
λ Έλ
- HTML μμλ HTML λ¬Έμλ₯Ό ꡬμ±νλ κ°λ³ μ μΈ μμλ₯Ό μλ―Έν©λλ€.
- HTML μμλ λ λλ§ μμ§μ μν΄ νμ±λμ΄ DOMμ ꡬμ±νλ μμ λ Έλ κ°μ²΄λ‘ λ³ν
- HTML μμ κ°μλ μ€μ²© κ΄κ³λ₯Ό κ°μ§ μ μμΌλ©° μ΄λ¬ν κ΄κ³λ₯Ό λ°μνμ¬ HTML μμλ₯Ό κ°μ²΄νν λͺ¨λ λ Έλ κ°μ²΄λ€μ νΈλ¦¬ μλ£ κ΅¬μ‘°λ‘ κ΅¬μ±νλ€.
λ Έλ κ°μ²΄μ νμ
- λ Έλ κ°μ²΄λ μμ ꡬ쑰λ₯Ό κ°μ§κ³ μ΄ 12κ° μ’ λ₯μ λ Έλκ° μλ€.
- λνμ μΌλ‘ 4κ°μ§ μ€μν λ
Έλ νμ
μ μ 리 ν μ μλ€.
- λ¬Έμ λ
Έλ(
document node
)- DOM νΈλ¦¬μ μ΅μμμ μ‘΄μ¬νλ λ£¨νΈ λ Έλ, document κ°μ²΄ λ₯Ό κ°λ¦¬ν¨λ€.
- document κ°μ²΄λ λΈλΌμ°μ κ° λ λλ§ν HTMLλ¬Έμ μ 체λ₯Ό κ°λ¦¬ν€λ κ°μ²΄
- window.document νΉμ documentλ‘ μ°Έμ‘° κ°λ₯
- script νκ·Έλ‘ μλ°μ€ν¬λ¦½νΈ νμΌμ΄ λΆλ¦¬λμ΄ μμ΄λ μ μ κ°μ²΄ window.documentμ λ°μΈλ κ°μ²΄λ₯Ό λ°λ¦ λλ€. (μ¦, HTML λ¬ΈμλΉ documentκ°μ²΄λ μ μΌ)
- documentκ°μ²΄λ DOMνΈλ¦¬μ λ£¨νΈ λ Έλ μ΄λ―λ‘ DOM νΈλ¦¬μ λ Έλλ€μ μ κ·ΌνκΈ° μν μ§μ μ μν μ ν©λλ€.
- μμ λ
Έλ(
element node
)- HTML μμλ₯Ό κ°λ¦¬ν€λ κ°μ²΄
- κ° HTML μμλ€μ μμκ΄κ³λ₯Ό κ°μ§λ―λ‘, μμ λ Έλλ λ¬Έμμ ꡬ쑰λ₯Ό νννλ€
- μ΄νΈλ¦¬λ·°νΈ λ
Έλ(
attribute node
)- HTML μμμ μ΄νΈλ¦¬λ·°νΈλ₯Ό κ°λ¦¬ν€λ κ°μ²΄
- μ§μ λ HTML μμμ λ Έλμ μ°κ²°λμ΄ μλ€.
- μμ λ Έλμλ§ μ°κ²°λμ΄ μκ³ λΆλͺ¨ λ Έλλ₯Ό κ°μ§μ§ μμ
- λ°λΌμ, μ΄νΈλ¦¬λ·°νΈ λ Έλμ μ κ·Όνλ €λ©΄ μμ λ Έλμ λ¨Όμ μ κ·Ό ν΄μΌν¨
- ν
μ€νΈ λ
Έλ(
text node
)- HTML μμμ ν μ€νΈλ₯Ό κ°λ¦¬ν€λ κ°μ²΄
- μμ λ Έλμ μμ λ Έλ
- μμ λ Έλλ₯Ό κ°μ§ μ μλ 리ν λ Έλ(leaf node) μ¦, DOM νΈλ¦¬μ μ΅μ’ λ¨
- λ°λΌμ , ν μ€νΈ λ Έλμ μ κ·Όνλ €λ©΄ λΆλͺ¨λ ΈλμΈ μμ λ Έλμ μ κ·Ό ν΄μΌ νλ€.
- λ¬Έμ λ
Έλ(
λ Έλ κ°μ²΄μ μμ ꡬ쑰
- DOM μ ꡬμ±νλ λ Έλ κ°μ²΄λ νμ€ λΉνΈμΈ κ°μ²΄κ° μλλΌ λΈλΌμ°μ νκ²½μμ μΆκ°μ μΌλ‘ μ 곡νλ νΈμ€νΈ κ°μ²΄
- λ Έλ κ°μ²΄λ μλ°μ€ν¬λ¦½νΈ κ°μ²΄μ΄λ―λ‘ νλ‘ν νμ μ μν μμ ꡬ쑰λ₯Ό κ°μ§.
- λͺ¨λ λ
Έλ κ°μ²΄λ
Object
,EventTarget
,Node
μΈν°νμ΄μ€λ₯Ό μμ. - HTML μμμ μ’
λ₯μ λ°λΌ κ³ μ μ κΈ°λ₯μ κ°μ§κΈ°λ νλ€.
DOM
μHTML
λ¬Έμμ κ³μΈ΅μ ꡬ쑰μ μ 보λ₯Ό νννλ κ²μ λ¬Όλ‘ λ Έλ κ°μ²΄μ μ’ λ₯. μ¦, λ Έλ νμ μ λ°λΌ νμν κΈ°λ₯μ νλ‘νΌν°μ λ©μλμ μ§ν©μΈDOM API
λ‘ μ 곡.
μ΄
DOM API
λ₯Ό ν΅ν΄HTML
μ ꡬ쑰λ λ΄μ© λλ μ€νμΌ λ±μ λμ μΌλ‘ μ‘°μ κ°λ₯.
μμ μ·¨λ λ Έλ
idλ₯Ό μ΄μ©ν μμ λ Έλ μ·¨λ
Document.prototype.getElementById
λ©μλ μ¬μ©- μΈμλ‘ μ λ¬λ id κ°μ κ°λ 첫 λ²μ§Έ μμ λ Έλλ§ λ°ν
νκ·Έ μ΄λ¦μ μ΄μ©ν μμ λ Έλ μ·¨λ
getElementsByTagName
λ©μλ μ¬μ©Document.prototype.getElementsByTagName
: λ£¨νΈ λ ΈλμΈ λ¬Έμλ Έλ(document
)λ₯Ό ν΅ν΄ νΈμΆElement.prototype.getElementsByTagName
: νΉμ μμ λ Έλλ₯Ό ν΅ν΄ νΈμΆ (νΉμ μμ λ Έλμ μμ μ€μμ νμ)
DOM
컬λ μ κ°μ²΄μΈHTMLCollection
κ°μ²΄ λ°ν(μ μ¬ λ°°μ΄ μ΄λ©΄μ μ΄ν°λ¬λΈ)
classλ₯Ό μ΄μ©ν μμ λ Έλ μ·¨λ
- getElementsByClassName λ©μλ μ¬μ©
- μΈμλ‘ μ λ¬ν class μ΄νΈλ¦¬λ·°νΈ κ° κ°λ λͺ¨λ μμ λ Έλλ₯Ό νμ νμ¬ λ°ν
DOM
컬λ μ κ°μ²΄μΈHTMLCollection
κ°μ²΄ λ°ν(μ μ¬ λ°°μ΄ μ΄λ©΄μ μ΄ν°λ¬λΈ)
CSS μ νμλ₯Ό μ΄μ©ν μμ λ Έλ μ·¨λ
/* μ 체 μ νμ: λͺ¨λ μμλ₯Ό μ ν */
* { ... }
/* νκ·Έ μ νμ: λͺ¨λ p νκ·Έ μμλ₯Ό λͺ¨λ μ ν */
p { ... }
/* id μ νμ: id κ°μ΄ 'foo'μΈ μμλ₯Ό λͺ¨λ μ ν */
#foo { ... }
/* class μ νμ: class κ°μ΄ 'foo'μΈ μμλ₯Ό λͺ¨λ μ ν */
.foo { ... }
/* μ΄νΈλ¦¬λ·°νΈ μ νμ: input μμ μ€μ type μ΄νΈλ¦¬λ·°νΈ κ°μ΄ 'text'μΈ μμλ₯Ό λͺ¨λ μ ν */
input[type=text] { ... }
/* νμ μ νμ: div μμμ νμ μμ μ€ p μμλ₯Ό λͺ¨λ μ ν */
div p { ... }
/* μμ μ νμ: div μμμ μμ μμ μ€ p μμλ₯Ό λͺ¨λ μ ν */
div > p { ... }
/* μΈμ νμ μ νμ: p μμμ νμ μμ μ€μ p μμ λ°λ‘ λ€μ μμΉνλ ul μμλ₯Ό μ ν */
p + ul { ... }
/* μΌλ° νμ μ νμ: p μμμ νμ μμ μ€μ p μμ λ€μ μμΉνλ ul μμλ₯Ό λͺ¨λ μ ν */
p ~ ul { ... }
/* κ°μ ν΄λμ€ μ νμ: hover μνμΈ a μμλ₯Ό λͺ¨λ μ ν */
a:hover { ... }
/* κ°μ μμ μ νμ: p μμμ μ½ν
μΈ μ μμ μμΉνλ 곡κ°μ μ ν
μΌλ°μ μΌλ‘ content νλ‘νΌν°μ ν¨κ» μ¬μ©λλ€. */
p::before { ... }
querySelector()
- μΈμλ‘ μ λ¬ν CSS μ νμλ₯Ό λ§μ‘±μν€λ μμ λ Έλκ° μ¬λ¬ κ°μΈ κ²½μ° μ²« λ²μ§Έ μμ λ Έλλ§ λ°ν
- μΈμλ‘ μ λ¬λ CSS μ νμλ₯Ό λ§μ‘±μν€λ μμ λ
Έλκ° μ‘΄μ¬νμ§ μλ κ²½μ°
null
μ λ°ν - μΈμλ‘ μ λ¬ν CSS μ νμκ° λ¬Έλ²μ λ§μ§ μλ κ²½μ°
DOMException
μλ¬ λ°μ Document.prototype
/Element.prototype
μ μ μ λ λ©μλλ‘ λλ¨
querySelectorAll()
- μΈμλ‘ μ λ¬ν CSS μ νμλ₯Ό λ§μ‘± μν€λ λͺ¨λ μμ λ Έλλ₯Ό νμνμ¬ λ°ν
- μ¬λ¬κ°μ μμ λ
Έλ κ°μ²΄λ₯Ό κ°λ
DOM
컬λ μ κ°μ²΄μΈNodeList
λ₯Ό λ°ν NodeList
λ μ μ¬ λ°°μ΄ κ°μ²΄ μ΄λ©΄μ μ΄ν°λ¬λΈ- μμκ° μ‘΄μ¬νμ§ μλ κ²½μ° λΉ
NodeList
κ°μ²΄ λ°ν - λ¬Έλ²μ λ§μ§ μλ κ²½μ°
DOMException
νΉμ μμ μ·¨λν μ μλμ§ νμΈ
- Element.prototype.matches λ©μλ μ¬μ©
- μΈμλ‘ μ λ¬ν CSS μ νμλ₯Ό ν΅ν΄ νΉμ μμ λ Έλλ₯Ό μ·¨λν μ μλμ§ νμΈ
const $apple = document.querySelector('.apple');
// $apple λ
Έλλ '#fruits > li.apple'λ‘ μ·¨λν μ μλ€.
console.log($apple.matches('#fruits > li.apple')); // true
// $apple λ
Έλλ '#fruits > li.banana'λ‘ μ·¨λν μ μλ€.
console.log($apple.matches('#fruits > li.banana')); // false
- μ΄λ²€νΈ μμμ μ¬μ©ν λ μ μ©νλ€.
HTMLCollection κ³Ό NodeList
HTMLCollection
HTMLCollection
μ κ°μ²΄μ μν λ³νλ₯Ό μ€μκ°μΌλ‘ λ°μ ν©λλ€.- μ΄μ μλ κ°μ²΄λΌκ³ λΆλ₯΄κΈ°λ ν¨
- μνκ° μ¦μ λ°μ λκΈ° λλ¬Έμ μλ¬κ° λκΈ°λ ν¨, μ΄λ₯Ό ν΄κ²°νκΈ° μν΄ λ°°μ΄λ‘ λ³ν νμ¬ μ¬μ© κΆμ₯
// class κ°μ΄ 'red'μΈ μμ κ°μ²΄λ₯Ό λͺ¨λ HTMLCollection μΌλ‘ λ°ν
const $elems = document.getElementsByClassName('red');
// κ°μ²΄ μνκ° μ€μκ°μΌλ‘ λ°μλλ©΄μ forλ¬Έ μΌλ‘ μ¬μ©ν κ²½μ° μνλ λλ‘ μ‘°μνκΈ° μ΄λ €μ
// λ°°μ΄λ‘ λ³νν΄μ μ¬μ©
[...$elems].forEach(ele => ele.className = 'blue');
NodeList
- μ€μκ°μΌλ‘ κ°μ²΄μ μν λ³κ²½μ λ°μνμ§ μλ κ°μ²΄
NodeList.prototype.forEach
λ©μλλ₯Ό μμ λ°μ μ¬μ©ν μ μλ€.- μμΈλ‘,
childNodes
νλ‘νΌν°κ° λ°ννλNodeList
κ°μ²΄λHTMLCollection
κ³Ό κ°μ΄ μνκ° μ€μκ°μΌλ‘ λ°μλλ€.
λ Έλ κ°μ²΄μ μν λ³κ²½κ³Ό μκ΄μμ΄ μ¬μ©νλ €λ©΄ HTMLColleciton μ΄λ NodeList κ°μ²΄λ₯Ό λ°°μ΄λ‘ λ³νν΄μ μ¬μ©μ κΆμ₯
λ κ°μ²΄λ λͺ¨λ μ μ¬ λ°°μ΄μ΄λ©΄μ μ΄ν°λ¬λΈμ΄λ€. μ¦, μ€νλ λ λ¬Έλ²μΌλ‘ λ°°μ΄λ‘ λ³ν κ°λ₯
λ Έλ νμ
DOM νΈλ¦¬ μμ λ Έλλ₯Ό νμ ν μ μλλ‘ Node, Element μΈν°μ€νμ΄μ€λ νΈλ¦¬ νμ νλ‘νΌν°λ₯Ό μ 곡
Node.prototype
μ΄ μ 곡νλ νλ‘νΌν°parentNode
: λΆλͺ¨ λ Έλ νμ, (λΆλͺ¨ λ Έλλ ν μ€νΈ λ Έλκ° λ μ μλ€.)previousSibling
: μ΄μ νμ λ Έλ νμνμ¬ λ°ν, μμ λ Έλ λλ ν μ€νΈ λ Έλλ₯Ό λ°νfirstChild
: 첫 λ²μ§Έ μμ λ Έλ λ°ν , μμ λ Έλ λ λ ν μ€νΈ λ ΈλchildNodes
: μμ λ Έλλ₯Ό λͺ¨λ νμ νμ¬NodeList
λ‘ λ°ν, ν μ€νΈ λ Έλ ν¬ν¨ λ μ μλ€.
Element.prototype
μ΄ μ 곡νλ νλ‘νΌν°previousElementSibling
: μ΄μ νμ λ Έλ λ°ν, μμ λ Έλλ§ λ°νnextElementSibling
: μμ μ λ€μ νμ μμ λ Έλ λ°ν, μμ λ Έλλ§ λ°νchildren
: μμ λ Έλ μ€μμ μμ λ Έλλ§ λͺ¨λ νμνμ¬HTMLCollection
μΌλ‘ λ°ν (ν μ€νΈ λ Έλ ν¬ν¨ x)
μ΄μΈμλ λͺκ°μ§ νλ‘νΌν° λ μμ§λ§ μμ λ©μλ λμκ³Ό λΉμ·ν¨
λ Έλ μ 보 μ·¨λ
Node.prototype.nodeType
- λ Έλ κ°μ²΄μ μ’ λ₯. μ¦, λ Έλ νμ μ λνλ΄λ μμλ₯Ό λ°ν.
- λ
Έλ νμ
μμλ
Node
μ μ μλμ΄ μμ. Node.ELEMENT_NODE
: μμ λ Έλ νμ μ λνλ΄λ μμ1
μ λ°ν.Node.TEXT_NODE
: ν μ€νΈ λ Έλ νμ μ λνλ΄λ μμ3
μ λ°ν.Node.DOCUMENT_NODE
: λ¬Έμ λ Έλ νμ μ λνλ΄λ μμ9
λ₯Ό λ°ν.
Node.prototype.nodeName
- λ Έλμ μ΄λ¦μ λ¬Έμμ΄λ‘ λ°ν.
- μμ λ
Έλ: λλ¬Έμ λ¬Έμμ΄λ‘ νκ·Έ μ΄λ¦(
"UL"
,"LI"
λ±)μ λ°ν. - ν
μ€νΈ λ
ΈνΈ: λ¬Έμμ΄
"#text"
λ₯Ό λ°ν. - λ¬Έμ λ
Έλ: λ¬Έμμ΄
"#document"
λ₯Ό λ°ν.
μμ λ Έλμ ν μ€νΈ μ‘°μ
nodeValue
- λ Έλ κ°μ²΄μ κ°(ν μ€νΈ λ Έλμ ν μ€νΈ)μ λ°ν
- λ¬Έμ λ
Έλλ μμ λ
Έλλ
nodeValue
μ°Έμ‘°νλ©΄null
λ°ν
<!DOCTYPE html>
<html>
<body>
<div id="foo">Hello</div>
</body>
<script>
// 1. #foo μμ λ
Έλμ μμ λ
ΈλμΈ ν
μ€νΈ λ
Έλλ₯Ό μ·¨λνλ€.
const $textNode = document.getElementById('foo').firstChild;
// 2. nodeValue νλ‘νΌν°λ₯Ό μ¬μ©νμ¬ ν
μ€νΈ λ
Έλμ κ°μ λ³κ²½νλ€.
$textNode.nodeValue = 'World';
console.log($textNode.nodeValue); // World
</script>
</html>
textContent
- μμ λ Έλμ ν μ€νΈμ μμ λ Έλμ ν μ€νΈλ₯Ό λͺ¨λ μ·¨λ
- μ¦, textContentλ μμλ Έλμ μ½ν μΈ μμ(μμ νκ·Έμ μ’ λ£νκ·Έ μ¬μ΄)μ λͺ¨λ ν μ€νΈλ₯Ό λͺ¨λ λ°ν
- μ΄λ HTML λ§ν¬μ μ 무μλ¨
<!DOCTYPE html>
<html>
<body>
<div id="foo">Hello <span>world!</span></div>
</body>
<script>
// #foo μμ λ
Έλμ ν
μ€νΈλ₯Ό λͺ¨λ μ·¨λνλ€. μ΄λ HTML λ§ν¬μ
μ 무μλλ€.
console.log(document.getElementById('foo').textContent); // Hello world!
</script>
</html>
innerText νλ‘νΌν° μμ textContentμ μ μ¬ν λμμ ν©λλ€.
λ¨, innerTextλ CSSμ μν΄ λΉνμ λ‘ μ§μ λ μμμ λ Έλ ν μ€νΈλ λ°ννμ§ μμ΅λλ€.
DOM μ‘°μ
- μλ‘μ΄ λ Έλλ₯Ό DOMμ μΆκ°νκ±°λ, κΈ°μ‘΄ λ Έλλ₯Ό μμ , κ΅μ²΄ λ± μ‘°μν μ μλ€.
innerHTML
- μμ λ Έλμ μ½ν μΈ μμ μ¬μ΄μ ν¬ν¨λ λͺ¨λ HTML λ§ν¬μ μ λ¬Έμμ΄λ‘ λ°ννλ€.
- innerHTML νλ‘νΌν°μ λ¬Έμμ΄μ ν λΉνλ©΄ μμλ Έλμ λͺ¨λ μμλ Έλκ° μ κ±°λκ³ ν λΉν λ¬Έμμ΄μ νμ±λμ΄ DOMμ λ°μ
<!DOCTYPE html>
<html>
<body>
<ul id="fruits">
<li class="apple">Apple</li>
</ul>
</body>
<script>
const $fruits = document.getElementById('fruits');
// λ
Έλ μΆκ°
$fruits.innerHTML += '<li class="banana">Banana</li>';
// λ
Έλ κ΅μ²΄
$fruits.innerHTML = '<li class="orange">Orange</li>';
// λ
Έλ μμ
$fruits.innerHTML = '';
</script>
</html>
- innerHTML λ¨μ
- ν¬λ‘μ€ μ¬μ΄νΈ μ€ν¬λ¦½νΈ 곡격μ μ·¨μ½
- λͺ¨λ μμμμλ₯Ό μ κ±°νκ³ ν λΉνκΈ° λλ¬Έμ λΉν¨μ¨μ
- μλ‘μ΄ μμλ₯Ό μ½μ ν λ μμΉλ₯Ό μ§μ ν μ μμ
insertAdjacentHTML λ©μλ
- κΈ°μ‘΄ μμλ₯Ό μ κ±°νμ§ μμΌλ©΄μ μμΉλ₯Ό μ§μ ν΄ μλ‘μ΄ μμλ₯Ό μ½μ νλ€.
- 첫 λ²μ¬ μΈμλ‘ μμΉλ₯Ό μ§μ (
beforebegin
,afterbegin
,beforend
,afterend
)
<!DOCTYPE html>
<html>
<body>
<!-- beforebegin -->
<div id="foo">
<!-- afterbegin -->
text
<!-- beforeend -->
</div>
<!-- afterend -->
</body>
</html>
λ Έλ μμ±κ³Ό μΆκ°
μμ λ Έλ μμ±
Document.prototype.createElement(tagName)
λ©μλλ μμ λ Έλλ₯Ό μμ±νμ¬ λ°ν.tagName
μΈμμλ νκ·Έ μ΄λ¦μ λνλ΄λ λ¬Έμμ΄μ μ λ¬.createElement
λ©μλλ‘ μμ±ν μμ λ Έλλ κΈ°μ‘΄DOM
μ μΆκ°λμ§ μκ³ νλ‘ μ‘΄μ¬νλ μνλ‘, μ΄νμDOM
μ μΆκ°νλ μ²λ¦¬κ° νμ.createElement
λ©μλλ‘ μμ±ν μμ λ Έλλ μλ¬΄λ° μμ λ Έλκ° μλ μν.
ν μ€νΈ λ Έλ μμ±
Document.prototype.createTextNode(text)
λ©μλλ ν μ€νΈ λ Έλλ₯Ό μμ±νμ¬ λ°ν.createTextNode
λ©μλλ‘ μμ±ν ν μ€νΈ λ Έλλ μμ λ Έλμ μμ λ Έλμ μΆκ°λμ§ μκ³ νλ‘ μ‘΄μ¬νλ μνλ‘, μ΄νμ μμ λ Έλμ μΆκ°νλ μ²λ¦¬κ° νμ.
ν μ€νΈ λ Έλλ₯Ό μμ λ Έλμ μμ λ Έλλ‘ μΆκ°
Node.prototype.appendChild(childNode)
λ©μλλ μΈμλ‘ μ λ¬ν λ Έλλ₯Ό λ©μλλ₯Ό νΈμΆν λ Έλμ λ§μ§λ§ μμ λ Έλλ‘ μΆκ°.childNode
μΈμμλ μΆκ°ν μμ λ Έλλ₯Ό μ λ¬.- μμ λ
Έλμ μμ λ
Έλκ° νλλ μλ κ²½μ°μλ
textContent
νλ‘νΌν°λ₯Ό μ¬μ©νμ¬ ν μ€νΈ λ Έλλ₯Ό μΆκ°νλ κ²μ΄ λμ± κ°νΈ. - μμ λ
Έλμ μμ λ
Έλκ° μλ κ²½μ°
textContent
νλ‘νΌν°μ λ¬Έμμ΄μ ν λΉνλ©΄ μμ λ Έλμ λͺ¨λ μμ λ Έλκ° μ κ±°λκ³ ν λΉν λ¬Έμμ΄μ΄ ν μ€νΈλ‘ μΆκ°λλ―λ‘ μ£Όμ.
λ Έλ μ½μ
λ§μ§λ§ λ Έλλ‘ μΆκ°
Node.prototype.appendChild
- νΈμΆν λ Έλμ λ§μ§λ§ μμ λ Έλλ‘ DOMμ μΆκ°
μ§μ ν μμΉμ λ Έλ ν©μ
Node.prototype.insertBefore(newNode, childNode)
- 첫 λ²μ§Έ μΈμλ‘ μ λ¬λ°μ λ Έλλ₯Ό λ λ²μ§Έ μΈμλ‘ μ λ¬λ°μ λ Έλ μμ μ½μ
- λ λ²μ§Έ μΈμλ‘ μ λ¬λ°μ λ Έλλ λ°λμ insertBefore λ©μλλ₯Ό νΈμΆν λ Έλμ μμ λ Έλ μ΄μ΄μΌ νλ€.
λ Έλ μ΄λ
DOM
μ μ΄λ―Έ μ‘΄μ¬νλ λ Έλλ₯ΌappendChild
λλinsertBefore
λ©μλλ₯Ό μ¬μ©νμ¬DOM
μ λ€μ μΆκ°νλ©΄ νμ¬ μμΉμμ λ Έλλ₯Ό μ κ±°νκ³ μλ‘μ΄ μμΉμ λ Έλλ₯Ό μΆκ°.
λ Έλ 볡μ¬
Node.prototype.cloneNode([deep: true | false])
- 맀κ°λ³μ deep μ trueλ₯Ό μ λ¬νλ©΄ κΉμλ³΅μ¬ ,falseλ₯Ό μ λ¬ νλ©΄ μμ 볡μ¬
- μμ λ³΅μ¬ κ²½μ° μμ λ Έλλ₯Ό 볡μ¬νμ§ μμΌλ―λ‘ ,ν μ€νΈ λ Έλλ μλ€.
λ Έλ κ΅μ²΄
Node.prototype.replaceChild(newChild, oldChild)
oldChild
λ Έλλ₯ΌnewChild
λ Έλλ‘ κ΅μ²΄- μ΄λ
oldChild
λ Έλλ νΈμΆν λ Έλμ μμ λ Έλ μ΄μ΄μΌ νλ€.
λ Έλ μμ
Node.prototype.removeChild(child)
- μΈμλ‘ μ λ¬ν λ
Έλλ₯Ό
DOM
μμ μμ
μ΄νΈλ¦¬ λ·°νΈ
HTML
λ¬Έμκ° νμ± λ λ μ΄ν°λ¦¬λ·°νΈλ μ΄ν°λ¦¬λ·°νΈ λ Έλλ‘ λ³ν λμ΄ μμ λ Έλμ μ°κ²° λ¨- νλμ μ΄νΈλ¦¬λ·°νΈλΉ νλμ μ΄νΈλ¦¬λ·°νΈ λ Έλ μμ±
- μ΄λ λͺ¨λ μ΄νΈλ¦¬λ·°νΈ λ
Έλμ μ°Έμ‘°λ μ μ¬ λ°°μ΄ κ°μ²΄μ΄μ μ΄ν°λ¬λΈμΈ
NamedNodeMap
κ°μ²΄μ λ΄κ²¨μ μμ λ Έλμ attributes νλ‘νΌν°μ μ μ₯
HTML μ΄νΈλ¦¬λ·°νΈ μ‘°μ
Element.prototype.getAttirbute(attributeName)
: μ΄νΈλ¦¬λ·°νΈ κ°μ μ°Έμ‘°Element.prototype.setAttirbute(attributeName, attributeValue)
: μ΄νΈλ¦¬λ·°νΈ κ°μ λ³κ²½Element.prototype.hasAttirbute(attributeName)
: μ΄νΈλ¦¬λ·°νΈ μ‘΄μ¬νλμ§ νμΈElement.prototype.removeAttirbute(attributeName)
: νΉμ μ΄νΈλ¦¬λ·°νΈ μμ
HTML μ΄νΈλ¦¬λ·°νΈ vs DOM νλ‘νΌν°
- μμ λ Έλ κ°μ²΄μλ HTML μ΄νΈλ¦¬λ·°νΈμ λμ νλ DOM νλ‘νΌν°κ° μ‘΄μ¬
- μ¦,
HTML
μ΄νΈλ¦¬ λ·°νΈλ μ€λ³΅ κ΄λ¦¬ λλ κ²μ²λΌ 보μΈλ€.- μμ λ
Έλμ
attributes
νλ‘νΌν°μμ κ΄λ¦¬νλ μ΄νΈλ¦¬λ·°νΈ λ Έλ - μμ λ
Έλμ
DOM
νλ‘νΌν°
- μμ λ
Έλμ
μ°¨μ΄μ ꡬλΆ
HTML
μ΄νΈλ¦¬λ·°νΈμ μν μHTML
μμμ μ΄κΈ°μνλ₯Ό μ§μ , μ΄κΈ° μνλ₯Ό μλ―Ένλ©° λ³νμ§ μμ- μμ λ
Έλλ μν(
state
)λ₯Ό κ°μ§κ³ μλ€. - μμ λ Έλλ 2κ°μ΄μμ μν(μ΄κΈ° μν μ μ΅μ μν)λ₯Ό κ΄λ¦¬ν΄μΌνλ€.
- μμ λ Έλμ μ΄κΈ° μνλ μ΄νΈλ¦¬λ·°νΈ λ Έλκ° κ΄λ¦¬
- μμ λ
Έλμ μ΅μ μνλ
DOM
νλ‘νΌν°κ° κ΄λ¦¬
μ΄νΈλ¦¬λ·°νΈ λ Έλ
- HTML μ΄νΈλ¦¬λ·°νΈλ‘ μ§μ ν μ΄κΈ°μνλ μ΄νΈλ¦¬λ·°νΈ λ Έλμμ κ΄λ¦¬
- μ΄κΈ° μν κ°μ μ·¨λνκ±°λ λ³κ²½ νλ €λ©΄
getAttribute
/setAttribute
λ©μλλ₯Ό μ¬μ©
DOM νλ‘νΌν°
- μ¬μ©μκ° μ λ ₯ν μ΅μ μνλ₯Ό κ΄λ¦¬
- λ¨ μ¬μ©μ μ λ ₯μ μν μν λ³νμ κ΄κ³μλ DOM νλ‘νΌν°λ§ μ΅μ μν κ°μ κ΄λ¦¬( ex- input)
getAttribute λ©μλλ‘ μ·¨λν κ°μ μΈμ λ λ¬Έμμ΄ μ΄μ§λ§, DOM νλ‘νΌν°λ‘ μ·¨λν μ΅μ μνκ°μ λ¬Έμμ΄μ΄ μλ μ μλ€.
data μ΄νΈλ¦¬λ·°νΈμ dataset νλ‘νΌν°
data
μ΄ν°λ¦¬λ·°νΈμdataset
νλ‘νΌν°λ₯Ό μ¬μ©ν΄ μ΄νΈλ¦¬λ·°νΈμ μλ°μ€ν¬λ¦½νΈ κ°μ λ°μ΄ν°λ₯Ό κ΅νν μ μλ€.data
μ΄νΈλ¦¬λ·°νΈλdata-
μ λμ¬ λ€μ μμμ μ΄λ¦μ λΆμ¬ μ¬μ©data
μ΄νΈλ¦¬λ·°νΈ κ°μHTMLElement.dataset
νλ‘νΌν°λ‘ μ·¨λ- μ‘΄μ¬ νμ§ μλ μ΄λ¦μ ν€λ‘
dataset
νλ‘νΌν°μ ν λΉνλ©΄HTML
μμμdata
μ΄νΈλ¦¬λ·°νΈκ° μΆκ°
μ€νμΌ
μΈλΌμΈ μ€νμΌ μ‘°μ
HTMLElement.prototype.style
νλ‘νΌν°getter
/setter
κ° λͺ¨λ μ‘΄μ¬νλ μ κ·Όμ νλ‘νΌν°λ‘ μμ λ Έλμ μΈλΌμΈ μ€νμΌμ μ·¨λνκ±°λ μΆκ° λλ λ³κ²½
<!DOCTYPE html>
<html>
<body>
<div style="color: red">Hello World</div>
<script>
const $div = document.querySelector('div');
// μΈλΌμΈ μ€νμΌ μ·¨λ
console.log($div.style); // CSSStyleDeclaration { 0: "color", ... }
// μΈλΌμΈ μ€νμΌ λ³κ²½
$div.style.color = 'blue';
// μΈλΌμΈ μ€νμΌ μΆκ°
$div.style.width = '100px';
$div.style.height = '100px';
$div.style.backgroundColor = 'yellow';
</script>
</body>
</html>
ν΄λμ€ μ‘°μ
- class μ΄νΈλ¦¬λ·°νΈμ λμνλ DOM νλ‘νΌν°λ class κ° μλλΌ
className
κ³ΌclassList
class κ° μλ°μ€ν¬λ¦½νΈ μμ½μ΄μ΄κΈ° λλ¬Έ
className
Element.prototype.className
class
μ΄νΈλ¦¬λ·°νΈμ κ°μ λ¬Έμμ΄λ‘ λ°ν- ν΄λμ€ κ°μ΄ 곡백μΌλ‘ ꡬλΆλμ΄ μμ κ²½μ° κ·Έλλ‘ λ¬Έμμ΄λ‘ λ°ν
classList
Element.prototype.classList
class
μ΄νΈλ¦¬λ·°νΈμ μ 보λ₯Ό λ΄μDOMTokenList
κ°μ²΄λ₯Ό λ°νDOMTokenList
κ°μ²΄λ class μ΄νΈλ¦¬λ·°νΈμ μ 보λ₯Όλνλ΄λ 컬λ μ κ°μ²΄λ‘ μ μ¬ λ°°μ΄μ΄λ©΄μ μ΄ν°λΈDOMTokenList
μ£Όμ λ©μλadd(... className)
: μΈμλ‘ μ λ¬λ 1κ°μ μ΄μμ λ¬Έμμ΄μ class μ΄νΈλ¦¬λ·°νΈ κ°μΌλ‘ μΆκ°remove(... className)
: μΈμλ‘ μ λ¬ν 1κ° μ΄μμ λ¬Έμμ΄κ³Ό μΌμΉνλ class μ΄νΈλ¦¬λ·°νΈμμ μμ (μΌμΉ νλ ν΄λμ€κ° μμΌλ©΄ 무μλ¨)item(index)
: μΈμλ‘ μ λ¬ν indexμ ν΄λΉνλ ν΄λμ€λ₯Ό class μ΄νΈλ¦¬λ·°νΈμμ λ°νcontains(className)
: μΈμλ‘ μ λ¬ν λ¬Έμμ΄κ³Ό μΌμΉνλ ν΄λμ€κ° class μ΄νΈλ¦¬λ·°νΈμ ν¬ν¨λμ΄ μλμ§ νμΈreplace(oldClassName, newClassName)
: 첫 λ²μ§Έ μΈμ ν΄λμ€λ₯Ό λλ²μ§Έ ν΄λμ€λ‘ λ³κ²½toggle(className[, force])
: μΈμλ‘ μ λ¬ν λ¬Έμμ΄κ³Ό μΌμΉνλ ν΄λμ€κ° μ‘΄μ¬νλ©΄ μ κ±°νκ³ μ‘΄μ¬νμ§ μμΌλ©΄ μΆκ°
μ΄ λ°μλ forEach, entires, keys, values, supports λ±μ λ©μλλ₯Ό μ 곡
'javascript > π study' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[9μ£Όμ°¨ μ€ν°λ]41μ₯-νμ΄λ¨Έ (0) | 2022.03.27 |
---|---|
[9μ£Όμ°¨ μ€ν°λ]40μ₯-μ΄λ²€νΈ (0) | 2022.03.27 |
[8μ£Όμ°¨ μ€ν°λ]38μ₯-λΈλΌμ°μ λ λλ§ (0) | 2022.03.27 |
[7μ£Όμ°¨ μ€ν°λ]37μ₯-Set κ³Ό Map (0) | 2022.03.27 |
[7μ£Όμ°¨ μ€ν°λ]35μ₯-λμ€νΈλμ²λ§ ν λΉ (0) | 2022.03.27 |
λκΈ