DOM 기초 정리

2023. 9. 28. 20:46· 프로그래밍 언어/JavaScript

문서 객체 모델을 DOM으로 표현한다. ‘돔’이라 읽음

 

DOM : 웹 문서의 모든 요소를 자바스크립트를 이용하여 조작할 수 있도록 객체를 사용해 문서를 해석하는 방법

 

document는 웹 문서 자체를 가리키는 DOM 요소 중 하나이다.

 

 

 

 

 

[DOM 트리]

 

<body>

<h1> 제목 </h1>
<p> 본문 </p>

</body>

DOM은 body를 h1,p의 부모요소로, h1,p를 body의 자식요소로 이해하고 구조화 한다.

그러면 나무를 거꾸로 뒤집어 놓은 모양이되고, 이것을 DOM 트리 라고 부른다.

 

 

 

 

 

			[h1]	 — 		[‘제목’]

[body] 	—	

			[p]		 —		[‘본문’]

 

각 [] 상자를 노드라고 한다.

DOM 트리는 웹 문서의 HTML 요소만 표현하지 않는다

 

 

 

 

 

- 웹 문서의 태그는 요소(Element) 노드로 표현한다.

- 태그가 품고 있는 텍스트는 해당 요소 노드(태그)의 자식 노드인 텍스트(Text) 노드로 표현한다.

- 태그의 속성은 모두 해당 요소 노드(태그)의 자식 노드인 속성(Attribute) 노드로 표현한다.

- 주석은 주석 노드로 표현함

 

 

 

 

 

[DOM 요소에 접근]

 

- CSS에는 선택자 개념이 있다. 

- DOM 요소에 접근할 때도 주로 선택자를 사용한다.

 

getElementById() 

DOM요소를 id 선택자로 접근

 

getElementsByClassName()

DOM요소를 class 값으로 찾아낸다.

 

CSS에서 class 선택자는 id 선택자와 다르게 웹 문서 안에서 여러 번 사용할 수 있다.

그래서 getElementsByClassName() 함수는 2개 이상의 웹 요소에 접근한다.

 

만약 getElememtsByClassName()로 접근한 DOM 요소 중 1개의 요소에만 접근하고 싶으면

배열의 인덱스를 사용하면 된다.

 

ex)

document.getElementsByClassName(“example”)[0];

 

getElementsByTagName()

DOM 요소를 태그 이름으로 찾아낸다.

마찬가지로 인덱스를 사용해서 특정 요소에 접근 할 수 있다.

 

querySelector(), querySelectorAll()

DOM요소를 다양한 방법으로 찾아주는 함수

 

id,class 값을 사용해도 되고, 태그 이름을 사용해도 된다.

두 함수는 DOM 요소 개수에만 차이가 있을 뿐 사용 방법은 같다

 

class값 앞에는 마침표(.)를, id 값 앞에서는 샵(#)을 붙인다.

document.querySelector(“#example”);

document.querySelector(“.example”);

 

 

 

 

 

[getElementById() 함수와 querySelector() 함수의 차이]

 

getElementById() 함수는 단순히 id 선택자를 사용해서 요소에 접근

querySelector() 함수는 id 선택자 뿐만 아니라, querySelector(#container > ul)처럼 둘 이상의 선택자를 사용해서 요소에 접근할 수 있다.

 

 

 

 

 

[접근한 DOM 요소의 속성 노드에 접근]

 

getAttribute(), setAttribute()

HTML 태그 속성을 가져오거나 수정하는 함수

 

document.querySelector(“#example”).getAttribute(“src”);

id가 example인 요소에 접근해서 그 요소의 src 속성을 가져온다.

 

 

 

addEventListener(“(1번)”, (2번), (3번));

1번 : 처리할 이벤트 유형이다. on을 붙이지 않고, click, mouseover 처럼 이벤트 이름만 사용한다.

2번 : 함수이다. 이벤트가 발생했을 때 실행할 명령을 나열하거나 따로 함수를 만들었다면 함수 이름을 지정한다.

3번 : 이벤트를 캡쳐링하는지 여부를 지정. 단 생략할 수 있음. 기본 값은 false

 

 

웹 문서에 있는 요소는 단순히 태그만 있는 게 아니라 태그 속성과 내용을 함께 사용한다. 그래서 <h1> 또는 <p> 태그를 추가하고 싶다면 단순한 태그 뿐만 아니라, 그에 해당하는 텍스트 내용 및 속성도 추가해야함

 

 

 

 

 

[<요소노드 속성노드> 텍스트노드 </요소노드>] 만드는 순서

 

1)

createElement() : 새 요소 노드를 만든다

 

2)

createTextNode() : 텍스트 내용이 있을 경우 텍스트 노드를 만든다

appendChild() : 텍스트 노드를 요소 노드에 자식 노드로 추가한다.

 

3)

creatAttribute() : 요소에 속성이 있을 경우 속성 노드를 만든다.

setAttributeNode() : 속성 노드를 요소 노드에 연결

 

4)

appendChild() : 새로 만든 요소노드를 부모 노드에 추가함

 

 

 

 

 

hasChildNodes()

특정 노드에 자식 노드가 있는지를 확인하는 함수

자식 노드가 있다면 true, 없다면 false 반납

 

removeChild()

DOM 트리에 있는 노드를 삭제할 때 removeChild() 함수를 사용한다.

부모노드에서 자식 노드를 삭제하는 함수이고, 괄호 안에는 삭제하려는 자식 노드가 들어감

 

parentNode()

현재 노드의 부모 요소 노드를 반환함

'프로그래밍 언어 > JavaScript' 카테고리의 다른 글

브라우저 객체 모델  (0) 2023.09.30
DOM으로 Form 요소 접근  (0) 2023.09.29
JSON.stringify(), JSON.parse(), toJSON() 정리  (0) 2023.09.26
Array 객체의 여러 함수들  (0) 2023.09.26
자바스크립트 기초 훑기 - 2  (0) 2023.07.21
'프로그래밍 언어/JavaScript' 카테고리의 다른 글
  • 브라우저 객체 모델
  • DOM으로 Form 요소 접근
  • JSON.stringify(), JSON.parse(), toJSON() 정리
  • Array 객체의 여러 함수들
tteokbokki-master
tteokbokki-master
공부하며 알아가는 걸 조금씩 정리하고 있어요
tteokbokki-master
용로그
tteokbokki-master
전체
오늘
어제
  • 분류 전체보기
    • 프로그래밍 언어
      • HTML & CSS
      • JavaScript
      • React 기초
      • 파이썬 기초
      • TanStack-Query
      • C언어 기초
      • git
      • 리눅스
      • 코딩테스트 공부
    • 개발 지식
    • 회고 및 기록
    • 프로젝트
      • TodoList 만들기
      • 학수고대 프로젝트
    • 기타
      • [JS-0기] 한입 FE 챌린지

인기 글

글쓰기 / 관리자
hELLO · Designed By 정상우.v4.2.1
tteokbokki-master
DOM 기초 정리
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.