본문 바로가기
IT/JavaScript

DOM(Document Object Model)

by 봉즙 2019. 6. 12.

DOM : 브라우저는 HTML 문서를 읽어서 DOM을 구성한다.

1
2
3
4
5
6
7
8
9
10
11
<!DICTYPE html>
<html lang="en">
<head>
<title>My title</title>
</head>
<body>
<a herf= "">My link</a>
<h1>My header</h1>
</body>
</html>
 

 

위의 코드를 가지고 이와같이 DOM을 구성한다.

 

메모리에 tree생성하고 이것을 조작한다.

생성된 DOM을 다뤄야 하기에 Script는 HTML 태그가 생성된 이후인 마지막에 넣는것이 효율이 좋다.

DOM에서 요소(element)찾는 방법

  • document.getElementById(id)  -  id로 찾기
  • document.getElementByTagName(name)   -  tag로 찾기
  • document.getElementsByClassName(name)   -   class로 찾기
  • document.querySelectorAll("셀렉터")    -   CSS selector로 찾기
    [참고] document.querySelector("셀렉터")   -   한개만 반환

DOM에서 요소(element)변경하기

  • element.innerHTML = "새로운 내용";
  • element.style.CSS속성 = 값; //css속성 변경
  • element.setAttribute(속성, 값); //elemen.속성 = 값;
  • var attr = element.getAttribute("속성"); //속성읽어오기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <h1 id = "header0">Header</h1>
<h1>Header</h1>
<h1>Header</h1>
<script>
window.onload = function(){
var h1Tag = document.getElementById('header0');
var h1Tags = document.querySelectorAll('h1');
 
h1Tag.innerHTML += '- first';
for(i = 0; i <h1Tags.length;i++){
h1Tags[i].innerHTML += '-'+i;
h1Tags[i].style.border = '2px solid red'//테두리를 빨강
h1Tags[i].style.backgroudColor = 'yellow';
}
}
</script>
</body>
</html>
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter

 

DOM에서 새로운 요소(element) 생성하기

1
document.createElement(element)

 

1
document.createTextNode(text)

 

1
elemnet.innerHTML = "HTML텍스트"//HTML

 

1
2
element.textContent = "텍스트"//HTML 태그 ㅇ
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter

 

DOM에서 요소(element) 추가 & 삭제하기

1
2
3
element.appendChild(element) //지정된 요소 (자식)을 추가
elemnet.removeChild(element) //지정된 요소 (자식)을 삭제
elemnet.replaceChild(element) //지정된 요소 (자식)으로 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script>
    window.onload = function(){
        //h1태그와 text node를 생성
        var h1 = document.createElement('h1');
        var txtNod = document.createTextNode('Hello');
 
        h1.appendChild(txtNode); //h1태그에 node를 추가
        document.body.appendChild(h1);//h1태그를 body에 추가
    }
    </script>
</body>
</html>
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script>
window.onload = function() {
    var img = document.createElement('img');
 
    img.setAttribute('src''cat.jpg'); //img.src = 'cat.jpg';
    img.setAttrubute('width'300); //img.width = 300;
    img.setAttribute('height'200); //img.height = 200;
 
    //사용자 정의 속성은 setAtrribute(), getAtrribute()로 읽고 쓰기를 해야한다.
    img.setAttribute('date-prop',100);//img.datat-prop=100;는 불가
    document.body.appendChild(img);
}
    </script>
</body>
</html>
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter

 

DOM에서 요소(element) 순회하기(navigation)

element.firstChild       -요소의 첫번째 자식

element.lastChild       -요소의 마지막 자식

element.parentNode  - 요소의 부모

element.nextSibling    - 요소의 다음 형제

elemnet.previousSibling  -요소의 이전형제

'IT > JavaScript' 카테고리의 다른 글

다차원 배열  (0) 2019.06.13
Event  (0) 2019.06.12
함수  (0) 2019.06.11
반복문  (0) 2019.06.11
조건문  (0) 2019.06.11

댓글