HTML DOM

HTML DOM(Document Object Model)은 웹 페이지가 로드될 때, 브라우저에 의해서 생성되는 것이다. JavaScript는 이러한 HTML DOM을 이용하여 HTML 요소에 접근하고 수정하여 정적인 페이지를 동적인 페이지로 만들 수 있다.

DOM 트리 구조

 

 

Method and Property

DOM(문서객체모델)에서 모든 HTML요소들은 객체로 정의된다. 이때 property는 HTML 요소를 원하는 것으로 바꾸고자 하는 값이고, method는 HTML 요소에 추가 혹은 제거하는 등 변경하고자 하는 행동이다.

 

위의 코드에서 getElementById 는 method, innerHTML은 property이다.

이와 같이 HTML 페이지의 어느 요소에 접근하려면 DOM을 이용하여 접근한다.

 

Finding HTML Elements  method

  • document.getElementById("id")
  • document.getElementsByClassName("classname")

Changing HTML Elements

  • property : element.innerHTML = 새로운 html 내용
  • property : element.attribute = 새로운 값
  • method : element.setAttribute(attribute, value)

Adding and Deleting Elements method

  • document.createElement(element)
  • document.removeChild(element)
  • document.appendChild(element)
  • document.write(text)

Events Handlers method

  • document.getElementById(id).onclick = function() {}

 

Node Relationships

DOM 트리 구조에서, 모든 HTML 요소들은 노드로 연결되어있다. 각 HTML 요소들을 부모 노드, 자식 노드, 형제 노드 등의 관계로 정의 할 수 있다. 계층 구조 이므로, 루트 노트를 제외한 모든 노드는 부모 노드가 있다. 

 

 

위의 HTML 코드를 보자.

  • <html> : 루트 노드
    • <html> : <head>와 <body>를 자식으로 가진다.
  • <head> : <html>의 첫 번째 자식 노드 
    • <head> :  <title>를 자식으로 가진다.
      • <title> : "DOM Tutorial" 이라는 text node 자식을 가진다.
  • <body> : <html>의 두 번째 자식 노드
    • <h1>과 <p>를 자식으로 가진다.
      • <h1> : "DOM Lesson one" 이라는 text node 자식을 가진다.
      • <p> : "Hello world!" 이라는 text node 자식을 가진다.

 

자바스크립트에서 이러한 노드들의 관계를 다음과 같은 속성을 사용하여 관리할 수 있다.

  • parentNode
  • childNodes[nodenumber]
  • firstChild
  • lastChild

생강강

,