본문 바로가기
Front-End/JavaScript

[JavaScript] HTML DOM

by 김뚱 2018. 8. 16.

HTML DOM (Document Object Model)

DOM은 문서를 엑세스하고 조작하기 위한 표준을 정의합니다. 

HTML DOM은 HTML 문서를 엑세스하고 조작하기 위한 표준 방법을 정의합니다.

HTML DOM을 사용하면 JavaScript가 HTML 문서의 모든 요소에 엑세스하여 이를 변경할 수 있습니다.

HTML 문서를 트리구조로 제공합니다. 


When a web page is loaded, the browser creates a Document Object Model of the page.

The HTML DOM model is constructed as a tree of Objects.



1. HTML Dom 메소드

HTML DOM은 JavaScript(및 다른 프로그래밍 언어)로 엑세스 할 수 있습니다. DOM에서 모든 HTML 요소는 객체로 정의됩니다.



2. HTML 요소 찾기

2-1.ID로 HTML 요소 찾기

document.getElementById(id)


2-2.태그 이름으로 HTML 요소 찾기

document.getElementByTagName(name)


2-3.클래스 이름으로 HTML 요소 찾기

document .getElementsByClassName(class names)


2-4.CSS 선택자로 HTML 요소 찾기

document.querySelectorAll(id/class names/types/attributes/values of attributes,etc)


ex) HTML 문서에 하나의 <h1> 요소만 포함되어 있어도 getElementsByTagName()메서드는 항상 배열을 반환하기 때문에 배열인덱스[0]을 지정해야 한다.



3. HTML 요소 변경하기

3-1.HTML 내용 변경하기

document.getElementById(id).innerHTML = new html content


3-2.속성 값 변경

document.getElementById(id).attribute = new value

document.getElementById(id).setAttribute(attribute, value)


3-3.HTML 스타일 변경하기

document.getElementById(id).property = new style 



4. 요소 추가 및 삭제

4-1.document.createElement(element) >>> Create an HTML element

4-2.document.removeChild(element) >>> Remove an HTML element

4-3.document.appendChild(element) >>> Add an HTML element

4-4.document.replaceChild(element) >>> Replace an HTML element

4-5.document.write(text) >>> Write into the HTML output stream



5. 이벤트 핸들러 추가

document.getElementById(id).onclick = function(){code} >>> Adding event handler code to an onclick event



6. 노드관계


<html>
<head>
<title>DOM Tutorial</title>
</head>
<body>
<h1>DOM Lesson one</h1>
<p>Hello world!</p>
</body>
</html>



위의 HTML에서 다음을 읽을 수 있습니다.


<html>은 루트 노드입니다.

<html>에는 부모가 없습니다.

<html>은 <head> 및 <body>의 부모입니다.

<head>는 <html>의 첫 번째 하위 항목입니다.

<body>는 <html>의 마지막 자식입니다.

<head>에는 하나의 하위가 있습니다. <title>

<title>에는 하나의 자식 (텍스트 노드)이 있습니다 : "DOM Tutorial"

<body>에는 두 개의 하위 항목이 있습니다. <h1> 및 <p>

<h1>에는 한 명의 자녀가 있습니다 : "DOM Lesson one"

<p>에는 "Hello world!"라는 자녀가 있습니다.

<h1> 및 <p>은 형제입니다.



7. 노드 간 이동

다음 노드 특성을 사용하여 JavaScript로 노드 사이를 탐색 할 수 있습니다.

parentNode

childNodes[nodenumber]

firstChild

lastChild

nextSibling

previousSibling



8. DOM 루트 노드

전체 문서에 대한 액세스를 허용하는 두 가지 특수 속성이 있습니다.


8-1.document.body - 문서의 본문

8-2.document.documentElement - 전체 문서



9. tag 재사용 불가

9-1.para라는 새로운 변수를 선언하여 tag를 생성한다.



9-2.para 변수를 이용하여 여러개의 tag를 생성할 수 없다. 즉 dom script로 생성된 tag는 재사용이 불가하다.








9-3.dom script와 관계없이 tag를 생성하여 추가할 수 있다. 




10. HTMLCollection 객체

getElementsByTagName() 메서드는 HTMLCollection 객체를 반환 합니다. HTMLCollection 객체는 HTML 요소의 배열과 같은 목록 (컬렉션)입니다. HTMLCollection은 배열이 아닙니다! HTMLCollection은 배열처럼 보이지만 그렇지 않습니다. 목록을 반복하면서 번호가있는 요소를 참조 할 수 있습니다 (배열과 동일). 그러나 HTMLCollection에서는 valueOf (), pop (), push () 또는 join ()과 같은 배열 메서드를 사용할 수 없습니다.


11. HTMLCollection과 NodeList의 차이점

HTMLCollection은 HTML 요소 모음입니다. NodeList는 문서 노드의 모음입니다. NodeList와 HTML 콜렉션은 매우 똑같습니다. HTMLCollection 객체와 NodeList 객체는 객체의 배열과 같은 목록 (컬렉션)입니다. 둘 다 목록의 항목 수를 정의하는 길이 속성을가집니다 (컬렉션). 둘 다 배열과 같은 각 항목에 액세스하기위한 인덱스 (0, 1, 2, 3, 4, ...)를 제공합니다. HTMLCollection 항목은 이름, ID 또는 인덱스 번호로 액세스 할 수 있습니다. NodeList 항목은 해당 인덱스 번호로만 액세스 할 수 있습니다. NodeList 오브젝트에만 속성 노드와 텍스트 노드가 포함될 수 있습니다. 노드 목록은 배열이 아닙니다! 노드 목록은 배열처럼 보일 수 있지만 그렇지 않습니다. 노드 목록을 반복하여 어레이와 같은 노드를 참조 할 수 있습니다. 그러나 노드 목록에서 valueOf (), push (), pop () 또는 join ()과 같은 배열 메서드를 사용할 수 없습니다.


728x90
반응형

댓글