- DOM μ λ Έλμ κ³μΈ΅ κ΅¬μ‘°λ‘ μ΄ν΄
- λ€μν λ Έλ νμ
- λΈλΌμ°μ λ€ κ°μ λΉνΈνμ±μ μ°ννλ DOM μ½λ©
1. λ Έλμ κ³μΈ΅ ꡬ쑰
-
HTML κ³Ό XML λ¬Έμλ λͺ¨λ DOM μ ν΅ν΄ λ Έλμ κ³μΈ΅ κ΅¬μ‘°λ‘ νν κ°λ₯
1 2 3 4 5 6 7 8
<html> <head> <title>Sample</title> </head> <body> <p>Hello</p> </body> </html>
- λ¬Έμ λ
Έλ(Document) λ κ° λ¬Έμλ₯Ό 루νΈλ‘ ννν¨. μμμ λ¬Έμ λ
Έλμ μμμ νλ λΏμΈλ° μ΄λ₯Ό
λ¬Έμμμ
λΌκ³ ν¨ - λ¬Έμ μμλ λ¬Έμμ μ΅μμ μμμ΄λ©° λ€λ₯Έ μμλ λͺ¨λ μ΄ μμ μ‘΄μ¬
- λ¬Έμ νλμ λ¬Έμ μμ νλλ§ μμ μ μμ
- λ¬Έμ λ
Έλ(Document) λ κ° λ¬Έμλ₯Ό 루νΈλ‘ ννν¨. μμμ λ¬Έμ λ
Έλμ μμμ νλ λΏμΈλ° μ΄λ₯Ό
2. λ€μν λ Έλ νμ
2-1 Node νμ
-
DOM λ 벨 1μλ Node λΌλ μΈν°νμ΄μ€κ° μ‘΄μ¬
-
κ° λ Έλμλ childNodes λΌλ νλ‘νΌν°κ° μλλ° μ΄ νλ‘νΌν°μλ NodeList κ° μ μ₯λ¨
-
NodeListλ μ²μ νΈμΆνμ λ μ»μ κ²°κ³Όλ₯Ό μ μ₯νκ³ μλ κ²μ΄ μλλΌ κ³μ λ°λλ―λ‘
μ΄μμλ
κ°μ²΄λΌκ³ λΆλ₯΄κΈ°λ ν¨1 2 3 4 5 6
var firstChild = someNode.childNodes[0]; var secondChilde = someNode.childNodes.item(1); var count = someNode.childNodes.length; // 2 someNode.childNodes.appendChild(newNode); console.log(count); // 3
-
κ° λ Έλμμλ λ¬Έμ νΈλ¦¬μμ λΆλͺ¨λ₯Ό κ°λ₯΄ν€λ
parentNode
νλ‘νΌν°κ° μμΌλ©°,childNodes
λͺ©λ‘μ κ° λ Έλλ νμ¬κ΄κ³λ‘previousSibling
,nextSibling
μΌλ‘ μ κ·Ό κ°λ₯νλ©°, λΆλͺ¨ μ μ₯(parentNode) μμλfirstChild
,lastChild
λ‘ μ κ·Ό κ°λ₯ -
λ Έλ μ‘°μ λ©μλ
-
appendChild() - childNodes λͺ©λ‘ λ§μ§λ§μ λ Έλ μΆκ°
-
insertBefore() - childNodes νΉμ μμΉμ μ½μ
-
replaceChild() - κΈ°μ‘΄ λ Έλ κ΅μ²΄
-
removeChild() - λ Έλ μμ
- replaceChild() μ removeChild() λ ν΄λΉ λ¬Έμμ μμ μ΄κΈ΄ νμ§λ§ λ¬Έμμμ μμΉλ₯Ό μ§μ λ°μ§ λͺ»ν μνλΌ λ³Ό μ μμ
-
-
cloneNode()
1 2 3 4 5
// μμ λ Έλ μ 체 λ³΅μ¬ var deepList = myList.cloneNode(true); // ν΄λΉ λ Έλ νλλ§ λ³΅μ¬ var shallowList = myList.cloneNode(false);
2-2 Document νμ
-
λ¬Έμ λ Έλλ₯Ό Document νμ μΌλ‘ νν
-
windowμ νλ‘νΌν°μ΄λ―λ‘ μ μμμ μ κ·Ό κ°λ₯
1 2 3 4 5 6
var html = document.documentElement; // <html> var body = document.body; // <body> var doctype = document.doctype; // <!DOCTYPE> var title = document.title; // title κ°μ Έμ€κΈ° document.title = "new Title"; // title λ³κ²½
-
μμ μμΉ
1 2 3 4 5 6 7 8 9 10
<img src="myImage.png" name="myImage1" id="myImage"> // μμ ID λ₯Ό 맀κ°λ³μλ‘ λ°μ var imgById = document.getElementById('myImage'); // μμ tag name μ 맀κ°λ³μλ‘ λ°μ var imgByTag = document.getElementByTagName('img'); // μμ name μ 맀κ°λ³μλ‘ λ°μ var imgByName = document.getElementByName('myImage1');
-
λ¬Έμμ μ°κΈ°
1 2 3 4 5 6 7 8 9 10
<html> <head> <title>document.write() Example</title> </head> <body> <script type="text/javascript"> document.write("<script type=\"text/javascript\" src=\"file.js\">" + "<\/script>"); </script> </body> </html>
2-3 Element νμ
-
HTML μμ
- Id - μμμ κ³ μ μλ³μ
- title - μμμ μΆκ°μ λ³΄λ‘ μΌλ°μ μΌλ‘ ν΄νμΌλ‘ ννλ¨
- classNmae - μμμ CSS ν΄λμ€μΈ class μμ±
-
μμ± μ»κΈ°
-
getAttribute()
-
setAttribute()
-
removeAttribute()
- μ£Όλ‘ μ»€μ€ν μμ±μ λ€λ£° λ μ¬μ©
1 2
div.myColor = "blue"; console.log(div.getAttribute("myColor")); // null
- λλΆλΆμ λΈλΌμ°μ μμ μ΄ νλ‘νΌν°λ μλμΌλ‘ μμ μμ±μ΄ λμ§λ μμΌλ―λ‘ getAttribute()λ‘ κ°μ μ΄λ¦μ μμ±μ μ κ·Όνλ©΄ null μ λ°ν
-
-
μμ μμ±
1 2 3 4 5 6
var div = document.createElement('div'); div.id = "myNewDiv"; div.className = "box"; // μμ±ν μμλ₯Ό λ¬Έμ νΈλ¦¬μ μΆκ°ν΄μΌ λ°μ document.body.appendChild(div);
2-4 Text νμ
-
νλ²ν ν μ€νΈκ° ν¬ν¨λκ³ , κΈμ κ·Έλλ‘ μ¬μ©λ¨
-
μ΄μ€μΌμ΄νλ HTML λ¬Έμλ ν¬ν¨ν μ μμ§λ§, HTML μ½λλ ν¬ν¨ λΆκ°λ₯
1 2 3 4 5
var textNode = document.createTextNode("<strong>hello</strong> wolrd"); element.appendChild(textNode); document.body.appendChild(element);
2-5 Comment νμ
-
μ£Όμμ DOM μμ Comment νμ μΌλ‘ νν
1
var comment = document.createComment("comment");
2-6 CDATASection νμ
-
XML κΈ°λ° λ¬Έμ μ μ© (myBatisλ₯Ό μ¬μ©νλ©΄ μμ£Ό λ΄)
1
<div id="myDiv"><![CDATA[this is some content.]]></div>
2-7 DocumentType νμ
-
λ¬Έμμ λ νμ μ 보
<!DOCTYPE HTML PUBLIC "-//W3C" ~~~~> console.log(document.doctype.name); // HTML
3. DOM λ€λ£¨κΈ°
- DOM μ‘°μμ λ¨μνλ©°, μλ°μ€ν¬λ¦½νΈλ₯Ό μΈ λλ μΌλ°μ μΈ HTML μ½λμ λ§μ°¬κ°μ§λ‘ νλ©΄ λ¨ (μΈμ λ μμΈλ μμ§λ§..)
3-1 λμ μλ°μ€ν¬λ¦½νΈ
-
1
<script type="text/javascript" src="client.js" />
-
1 2 3 4 5 6 7 8
function loadScript(url) { var script = document.createElement('script'); script.type = "text/javascript"; script.src = url; document.body.appendChild(script); } loadScript("client.js")
3-2 λμ μ€νμΌ
-
1
<link rel="stylesheet" type="text/css" href="styles.css">
-
1 2 3 4 5 6 7 8 9 10
function loadStyles(url) { var link = document.createElement('link'); link.rel = "stylesheet"; link.type = "text/css"; link.href = "style.css"; var head = document.getElementByTagName('head')[0]; head.appendChild(link); } loadStyles("styles.css");
3-3 λ Έλ리μ€νΈ μ¬μ©
-
μ΄μμλ
κ°μ²΄λ‘ κ°μ£ΌλκΈ°μ 무ν 루νκ° λ μ μμ1 2 3 4 5 6 7 8 9 10
var divs = document.getElementByTagName('div'), i, div; for(i = 0; i < divs.length; i++) { div = document.createElement('div'); document.body.appendChild(div); } // 루νκ° λ°λ³΅λ λλ§λ€ i < divs.length 쑰건μ νμΈνλλ° // divs.length κ° κ³μ κ°±μ λλ―λ‘ λ¬΄ν 루ν
1 2 3 4 5 6 7 8 9
var divs = document.getElementByTagName('div'), i, len, div; for(i = 0, len = divs.length; i < len; i++) { div = document.createElement('div'); document.body.appendChild(div); }
-
컬λ μ μ μ κ·Όν λλ§λ€ λ€μ 쿼리 νλ―λ‘, μΌλ°μ μΌλ‘ NodeList μ체μ μ κ·Όνλ μΌμ λλλ‘ νΌνλ κ²μ΄ μ’μ. μ¬μ©νλ€λ©΄ λ³μμ μ μ₯νμ¬ μ¬μ©