[객체] 2. HTML DOM 객체 - 1) 개요

2021. 1. 18. 16:07Front-end/Javascript

728x90
반응형

HTML DOM의 개념

  • 브라우저는 HTML 페이지를 로드하는 과정에서 각 HTML 태그를 하나의 객체로 만듬
  • 예를 들면, <p> ... </p>로 구성된 요소는 p 객체로, <div> ..</div>로 구성된 요소는 div 객체로 생성함
  • 이들은 HTML  문서의 각 요소를 객체화한 것이라는 뜻으로 HTML DOM(Document Object Model) 객체라고 부름
  • HTML을 동적으로 제어하기 위해서는 HTML DOM에 대한 지식이 반드시 필요
  • 각 HTML 태그에는 모양을 결정하는 CSS3 스타일 시트가 동반되므로, DOM 객체를 통해 CSS3 스타일의 프로퍼티 값을 바꾸면 HTML 태그가 출력된 색이나 모양을 동적으로 제어할 수 있다.
  •  DOM 객체를 통해 HTML 태그의 콘텐츠, 즉 텍스트나 이미지도 변경 가능

 

DOM 트리의 특징

- DOM 트리의 루트는 document 객체이다.    ★ document 객체는 DOM 객체가 아님에 유의!

- DOM 객체의 종류는 HTML 태그 종류만큼 있다

- HTML 태그 당 DOM 객체가 하나씩 생성된다. (같은 태그가 여러 개 있다고 해도 각 태그마다 DOM 객체가 생김)

- DOM 트리는 HTML  태그의 포함 관계에 따라 부모 자식 관계로 구성된다.

  ( <html> 태그 안에 <head>와 <body>가 있으므로 html 객체는 head와 body를 자식 객체로 가진다. )

 

DOM 객체의 구성요소

  • HTML 태그의 요소

 HTML 태그는 엘리먼트(element)라고도 불리며 다음 5가지 요소로 구성된다.

1)엘리먼트 이름 2)속성 3)CSS3 스타일 4)이벤트 리스너 5)콘텐츠

<p id="firstP" style="color:blue" onclick="this.style.color='violet'"> 
이것은 문장입니다.
</p>

위의 코드에서는

p - 엘리먼트 이름 / id - 속성 / style - css3스타일 / onclick - 이벤트 리스너 / 이것은 문장입니다.- 콘텐츠(innerHTML) 라고 할 수 있음

 

  • DOM 객체의 구성 요소(W3C의 표준)

 DOM 객체는 HTML 태그의 5 요소를 그대로 반영하여 다음 5종류의 속성으로 구성된다.

1) 프로퍼티 : DOM 객체의 멤버 변수로서 HTML 태그의 속성(attribute)들을 반영

2) 메소드: DOM 객체의 멤버 함수로서 HTML 태그를 제어하는데 활용

3) 컬렉션 : 정보를 집합적으로 표현하는 일종의 배열, 예를 들어 children 컬렉션은 DOM 객체의 모든 자식 DOM 객체에 대한 주소를 가진다

4) 이벤트 리스너 : 자바스크립트를 이용하면 직접 DOM 객체에 이벤트 리스너를 등록할 수 있다

5) css3스타일

 

DOM 객체들 사이의 관계

  •  DOM 객체들은 DOM 트리에서 부모,자식,형제의 관계로 연결되는데 이들은 다음 4개의 프로퍼티가 이용된다.

    1) parentElement 프로퍼티 : 부모 객체

    2) children 프로퍼티 : 직계 자식들의 컬렉션

    3) firstElementChild 프로퍼티 : 첫 번째 직계 자식

    4) lastElementChild 프로퍼티 : 마지막 직계 자식

 

  • sibling이란 DOM 트리에서 동일한 레벨에 있는 모든 사촌 및 형제 DOM 객체를 지칭하는 관계이다

      같은 부모의 자식이든 다른 부모의 자식이든 족보상 같은 레벨이면 모두 sibling 관계가 된다.

      sibling 관계에 있는 DOM 객체들은 다음 2개의 프로퍼티로 접근한다.

      1) previousElementSibling 프로퍼티 : 왼쪽 sibling 객체

      2) nextElementSibling 프로퍼티 : 오른쪽 sibling 객체

 

  • W3C에서 표준화한 DOM 객체의 주요 공통 프로퍼티,컬렉션,메소드
프로퍼티  설명 r/w
id 태그의 id속성 값 r/w
lang 태그의 lang 속성 값 r/w
style style 객체에 대한 레퍼런스 r/w
title 태그의 title 속성 값 r/w
tagName 태그 이름 문자열, 항상 대문자로 표시됨  예)SPAN,DIV r
innerHTML 시작 태그와 종료 태그 사이의 HTML 텍스트 r/w

 

프로퍼티 설명 r/w
childElementCount 자식 DOM 객체 개수 r
firstElementChild 첫 번째 자식 객체 r
lastElementChild 마지막 자식 객체 r
nextElementSibling 다음 형제 객체(오른쪽 형제) r
parentElement 부모 객체 r
previousElementSibling 이전 형제 객체(왼쪽 형제) r

 

프로퍼티 설명 r/w
offsetHeight 패딩,테두리,스크롤바를 포함한 높이 r
offsetWidth 패딩,테두리,스크롤바를 포함한 폭 r
offsetLeft 객체의 출력 위치, 수평 옵셋 r
offsetTop 객체의 출력 위치, 수직 옵셋 r

 

컬렉션 설명
children 자식 DOM 객체들의 컬렉션(자식들을 가리키는 레퍼런스 배열)

 

메소드 설명
addEventListener() 새로운 이벤트 리스너 등록
appendChild() 마지막 자식 뒤에 새로운 자식 추가
click() 사용자가 마우스를 클릭한 것과 동일한 작업 수행
focus() 키 입력을 받을 수 있도록 이 객체에 포커스 지정
setAttribute() 속성 추가
insertBefore() 지정된 자식 앞에 새 자식 추가
querySelector() 지정된 css3 셀렉터와 일치하는 첫 번째 자식 리턴
removeChild() 자식 삭제
replaceChild() 자식 대체
removeEventListener() addEventListener()로 등록한 이벤트 리스너 제거

 

728x90
반응형