Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- react-router-dom
- NEXT
- 연산자
- node
- 비동기
- webapi
- location
- math
- element
- react
- promise
- date
- 코딩테스트
- URLSearchParams
- 가변성
- context api
- 프로그래머스
- typescript
- 불변성
- ECMAScript
- JavaScript
- 동기
- fetch
- Web API
- javascirpt
Archives
- Today
- Total
sol의 개발로그
[javascript] DOM 검색 및 탐색 본문
Element에서 사용
1. getElementById
- HTML 'id' 속성(Attributes) 값으로 검색한 요소를 반환한다.
- 여러 요소가 검색된다면 가장 먼저 찾은 요소만 반환한다.
- 검색 결과가 없으면 'null'을 반환한다.

2. querySelector
- 'CSS 선택자'로 검색한 요소를 하나 반환한다.
- 여러 요소가 검색되면 가장 먼저 찾은 요소만 반환한다
- 검색 결과가 없으면, 'null'을 반환한다.

3. querySelectorAll
- 'CSS 선택자'로 검색한 모든 요소를 'NodeList'로 반환한다.
- 'NodeList' 객체는 'forEach'와 같은 메서드를 사용할 수 있다


NodeList로 반환된 결과가 배열데이터 처럼 보이지만 KEY를 숫자로 제공하고 length를 함께 작성하여 배열데이터 처럼 만들어진 유사배열(Array-like)이다. 그렇기 때문에 NodeList에서는 배열데이터 메서드는 사용이 불가하지만 forEach 메서드는 사용이 가능하다.
여기서 문제!
만약 NodeList로 반환된 데이터에 배열메서드를 사용하고 싶다면?
const nodeList = document.querySelectorAll(".child");
console.log(nodeList);
console.log(Array.from(nodeList));

4. previousElementSibling / nextElementSibling
previousElementSibling : 요소의 이전 형제 요소를 반한다.
nextElementSibling : 요소의 다음 형제 요소를 반환한다.

요소의 이전, 다음 형제이기 때문에 child 클래스를 가진 요소의 이전 형제는 찾을 수 없어 'null'을 반환한다.
5. childeren
- 요소의 모든 자식 요소를 반환한다.

배열 같아 보이지만 하단에 HTMLCollection이라고 명시되어있으며, [[Prototype]]: Object 로 객체형태의 유사배열임을 알 수 있다.
6. firstElementChild / lastElementChild
- firstElementChild : 요소의 첫 번째 자식 요소를 반환한다.
- lastElementChild : 요소의 마지막 자식 요소를 반환한다.

Node
1. parentElement
- Node의 부모 요소를 반환한다
const el = document.querySelector(".child");
console.log(el.parentElement);
console.log(el.parentNode);

위와 같은 구조 일 때 Node에서 사용한다는 가정을 하고 주석에 parentElement를 찾아도 똑같은 결과값을 반환한다.
(하단 코드 및 이미지 참조)
const el = document.querySelector(".child");
console.log(el.nextSibling.parentElement);

2. closest
- 자신을 포함한 조상 요소 중 'CSS 선택자'와 일치하는 가장 가까운 요소를 반환한다.
- 요소를 찾지 못하면 'null' 을 반환한다.
const el = document.querySelector(".child");
console.log(el.closest("div"));
console.log(el.closest("body"));
console.log(el.closest(".hello"));

3. previousSibling / nextSibling
- previousSibling : Node의 이전 형제 Node를 반환한다.

- nextSibling : Node의 다음 형제 Node를 반환한다.

'Javascript' 카테고리의 다른 글
| [javascript] 브라우저 화면, 요소의 크기 또는 좌표 확인하기 (0) | 2023.08.21 |
|---|---|
| [javascript] DOM 생성, 조회, 수정 (2) | 2023.08.21 |
| [javascript] DOM(Document Object Model) (0) | 2023.08.20 |
| [javascript] 동기 / 비동기 (Resolve, Reject, error 핸들링) (0) | 2023.08.20 |
| [javascript] 동기 / 비동기 (aynce, await) (0) | 2023.08.20 |