티스토리 뷰
📌DOM을 알아야 하는 이유
자바스크립트를 이용해 html에서 데이터를 가져오고 싶다면?
웹페이지에 보여지는 데이터를 변경하고 싶다면?
인터렉티브한 웹어플리케이션을 만들고 싶다면?
📌DOM : Document Object Model
👉DOM의 가장 큰 특징
dom은 어떤 언어로든 라이브러리만 갖춰지면 dom을 조작할 수 있다. 그 이유는 이 DOM이 API를 갖고 있어서 이다. API는 간단히 말하면 어떤 방식으로 명령이나 요청을 내리면 그에 따른 기능들을 수행하도록 만든 것이라고 볼 수 있는데, 즉 이 DOM이나, 그 부품들에 각각의 기능별로 버튼같은게 달려있다라고 생각하면 된다. 어떤 언어로든 그 버튼을 눌러서 기능을 작동시킬 수 있도록 말이다. 예들 들어 위에서 input 태그에는 value라는 버튼이 있어서 그 버튼을 누르면 거기에 입력된 값이 반환되는 것이다.
👉DOM API 사용하기
검색어를 입력받는 DOM에 접근하기 위해 아래 검색 input의 태그 예시를 살펴보자
<input id="search" class="search-input-style">
DOM API에는 getElement 혹은 getElements로 객체를 가져오는 메서드들이 있다. 이런 메서드를 이용해 인자로 엘리먼트에 대한 조건을 전달하면 조건에 부합하는 특정 엘리먼트를 반환한다. getElement , querySelector 는 엘리먼트를 한개만 반환하고 getElements , querySelectAll는 엘리먼트를 여러개를 반환한다.
DOM 객체를 찾는 키워드는 크게 4가지 이다.
<div class="mt-5 mb-6 font-jua">
<div class="d-inline-block mr-10 font-size-40">tag</div>
<div class="d-inline-block mr-10 font-size-40">id</div>
<div class="d-inline-block mr-10 font-size-40">class</div>
<div class="d-inline-block font-size-40">cssSelector</div>
</div>
1. 태그로 찾기
document.getElementsByTagName('input')
2. id로 찾기
속도가 가장 빠르다
document.getElementById('search')
3. className으로 찾기
document.getElementsByClassName('search-input-style')
4. cssSelector로 찾기
-일치하는 첫번째 엘리먼트
document.querySelector('.search-input-style')
-일치하는 모든 엘리먼트
document.querySelectorAll('.search-input-style')
👉DOM의 구조
각종 node(모든 HTML 요소들, html,div,radio...)들이 트리구조로 들어있다. 개나 고양이, 토끼가 모두 포유류라는 한 종류로 표현하지만 포유류라는 동물이 없는것처럼 node안에 html,div 등등의 여러 요소들이 있지만 node는 종류를 나타내는 추상클래스라고 볼 수 있다.
👉node의 기능 : html 요소들에서 공통적으로 볼 수 있는 기능들은 다수가 node의 속성 또는 기능이라고 보면 된다. textContent,childNodes,firstChild,lastChild,parenrNode,cloneNode,appendChild,insertBefore,removeChild 등등..
그리고 이 node들은 또 EventTarget으로부터 상속받기 때문에 즉 node는 클릭등의 이벤트가 가해지는 EventTarget이기 때문에 이 요소들은 모두 addEventListner 등의 기능 또한 갖고 있는 것이다.
📌깨달아야할 점
DOM은 HTML이나 XML 문서를 실체로 나타내는 API라고 생각하면 된다. 그래서 DOM은 HTML을 위한 API이면서 HTML을 탐색할 수 있고 HTML의 구조를 바꿀 수도 있다.
'WEB > Javascript' 카테고리의 다른 글
EVENT란? - (2)이벤트 핸들러 & 이벤트리스너(Event Listner) (0) | 2022.03.02 |
---|---|
EVENT란? - (1)이벤트의 종류 (0) | 2022.03.02 |
axios 개념 정리 (0) | 2021.12.08 |
getElementById 와 querySelector 차이점 (0) | 2021.10.26 |
insertAdjacentHTML 과 innerHTML의 차이점 (0) | 2021.10.26 |
- Total
- Today
- Yesterday
- vue3
- 이벤트리스너
- React18v
- JWT토큰
- Http통신
- loadbalancer
- 이벤트버스
- react
- 빅오표기법
- http
- focus와blur
- props
- 로그인 인증
- 더미데이터
- useState
- 항해솔직후기
- store.js
- 웹훅
- 알고리즘
- event종류
- vue.js3
- 항해플러스프론트엔드
- 디바운싱
- 레포지토리패턴
- 항해플러스후기
- eventListner
- Repository pattern
- vite
- Vue.js
- reactnative
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |