[Javascript] 자바스크립트 DOM(Document Object Model)

2022. 2. 15. 17:00·Javascript/기초

 

 

1. DOM이란?


DOM 계층 구조

 

문서 객체 모델(DOM, Document Object Model)은 XML이나 HTML 문서에 접근하기 위한 API이다. HTML내에 들어 있는 요소를 구조적으로 표현하는 양식이자, 그 구조를 통해 각각의 요소에 손 쉽게 접근한다.

 

웹 브라우저는 HTML를 읽을 때, 위의 그림처럼 Document 객체를 뿌리로 하는 tree 자료구조를 구성한다. 근 노드(root node)인 html을 시작으로 단말 노드(leaf node)까지 뻗어나간다. 위쪽을 부모 노드(parent node) 아래쪽을 자식 노드(chile node)라고 부르며, 어떤 노드든지 부모가 되거나 자식이 될 수 있다. 자식이 없는 node를 단말 노드(leaf node)라고 부른다.

 

대체로 DOM이라고 하면  HTML DOM을 얘기하는데, 여기서 HTML은 DOM이 아니다. 이게 무슨 뚱딴지같은 소리인가 싶을 수 있겠지만, 사실 DOM은 브라우저에서 HTML을 파싱하여 만들어낸 객체이다. 개발자 도구에 있는 코드는 브라우저에 의해 파싱된 대표적인 DOM 객체이다.

 

 

 

 

 

 

 

2.  DOM 조작


DOM을 조작하기 위해서 주로 자바스크립트를 사용하는데, 아래와 같은 작업을 할 수 있다.

① HTML 요소 불러와 출력하기

② HTML 요소나 속성을 추가 및 제거

③ HTML 문서의 모든 HTML 요소나 속성을 변경

④ HTML에 새로운 이벤트 추가 및 이벤트에 대한 반응

⑤ CSS 스타일 변경

 

개발자 도구에 있는 console을 통해 HTML을 조작할 수도 있고, 따로 js파일을 생성해 html파일과 js파일을 연결하거나, HTML 파일 자체 내에서 <script>태그를 이용해 인라인 코드로 조작할 수도 있다.

 

 

 

 

3. document.querySelector 처리시 자주 처리하는 3대 요소


document.querySelector()는 태그나 아이디, 클래스 등을 통해 요소를 선택하는 방법으로 첫 번째로 선택되는 요소 객체를 리턴한다.. 결과가 없다면 null을 리턴한다.

의미 표시 특수문자 ex
HTML tag 태그이름 필요 없음 h1
Class .클래스명 . .box
ID #아이디명 # #login_button

 

-예시

> document.querySelector("#id이름")

> document.querySelector(".class이름")

> document.querySelector("tag이름")

 

 

 

이를 아래와 같은 메소드로 처리하면 #이나 . 같은 특수문자가 필요없다.

메소드 설명
document.getElementById("id") id를 통한 요소 찾기
document.getElementsByTagName("tag") html tag를 통한 요소 찾기
document.getElementsByClassName("class") class를 통한 요소 찾기

 

 

 

 

4. DOM을 사용할 때 참고하면 좋은 자료


 

w3schools에 dom을 사용할 수 있는 방식이나 메소드에 대해서 자세히 나와있으니, 개발할 때 참고하면 좋을 것이다.

https://www.w3schools.com/js/js_htmldom.asp

 

JavaScript HTML DOM

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

 

 

 

 

 

 

** 참고 문서 **

MDN: https://developer.mozilla.org/ko/docs/Web/API/Document_Object_Model/Introduction

w3school: https://www.w3schools.com/js/js_htmldom.asp

 

 

 

'Javascript/기초' 카테고리의 다른 글
  • [Javascript] this와 apply/call/bind
  • [Javascript] AJAX의 개념
gakko
gakko
좌충우돌 개발기
  • gakko
    MYVELOP 마이벨롭
    gakko
  • 전체
    오늘
    어제
    • 분류 전체보기 (205)
      • Spring (23)
        • Spring (10)
        • Spring Boot (7)
        • Spring Security (1)
        • Hibernate (4)
      • Test (3)
      • 끄적끄적 (6)
      • 활동 (35)
        • 부스트캠프 (23)
        • 동아리 (3)
        • 컨퍼런스 (3)
        • 글또 (5)
        • 오픈소스 컨트리뷰션 (1)
      • 디자인패턴 (0)
      • Git & GitHub (22)
        • Git (13)
        • Github Actions (1)
        • 오류해결 (5)
        • 기타(마크다운 등) (3)
      • 리눅스 (6)
        • 기초 (6)
        • 리눅스 서버 구축하기 (0)
      • Infra (2)
        • Docker (1)
        • Elastic Search (0)
        • Jenkins (1)
        • AWS (1)
      • MySQL (7)
        • 기초 (6)
        • Real MySQL (1)
      • 후기 (3)
        • Udemy 리뷰 (3)
      • CS (26)
        • 웹 기본지식 (0)
        • 자료구조 (13)
        • 운영체제 OS (12)
        • 데이터베이스 (1)
        • 시스템 프로그래밍 (0)
        • 기타 (0)
      • Tools (1)
        • 이클립스 (1)
        • IntelliJ (0)
      • 프로젝트 (2)
        • 모여모여(부스트캠프) (1)
      • JAVA (32)
        • Maven (6)
        • 오류해결 (11)
        • 자바 클래스&메소드 (1)
        • JSP & Servlet (12)
      • Javascript (5)
        • 기초 (3)
        • React (2)
      • Python (28)
        • 파이썬 함수 (9)
        • 알고리즘 문제풀이 (16)
        • 데이터 사이언스 (2)
        • 웹 크롤링 (1)
      • 단순정보전달글 저장소 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 우진님
  • 공지사항

  • 인기 글

  • 태그

    부스트캠프 7기
    GitHub
    자바스크립트
    스프링
    부스트캠프
    MySQL
    스프링부트
    파이썬
    Git
    부스트캠프 멤버십
    웹개발
    java
    Python
    오류해결
    운영체제
    os
    jsp
    알고리즘
    자바
    Spring
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
gakko
[Javascript] 자바스크립트 DOM(Document Object Model)
상단으로

티스토리툴바