티스토리 뷰
얼마전에 투표UI 만들면서 DOM 요소가 맘대로 잡아와지지 않아서 한참 고생했는데
강의들으면서 쪼끔 정리할 수 있게 된것 같다.
배우고 나니까 별 일이 아니네.. 처음에는 어떻게 검색해야할지도 몰라서 멀리 돌아갔었다. 😭
DOM node? element?
검색하다보니 DOM node와 element의 개념이 다르다는걸 알게됐다.
간략하게 말하면 DOM node가 element를 포함하는 개념으로
node에는 여러가지 타입이 있고, 그 중 하나가 element이다.
DOM property로 원하는 요소 잡아오기
1. node를 잡아오는 DOM property는 아래와 같고
node.parentNode; // 부모 Node or null
node.nextSibling; // 다음 형제 NodeList
node.previousSibling; // 이전 형제 NodeList
node.firstChild; // 첫번째 자식 Node or null
node.lastChild; // 마지막 자식 Node or null
node.childNodes; // 자식들 NodeList
2. element를 잡아오는 property는 아래와 같다.
node.parentElement; // 부모 HTMLElement or null
node.nextElementSibling; // 다음 형제 HTMLCollection
node.previousElementSibling; // 이전 형제 HTMLCollection
node.children; // 자식들 HTMLCollection
같은 역할을 할 것 같은 property들이 있는데, 이 때 node와 element의 구분이 필요하다.
<p>
<b>Thank you</b> for visiting!
</p>
위 코드에서 요소를 잡아오는 경우
const paragragh = document.querySelector('p');
paragragh.childNodes; // NodeList : [HTMLElement, Text]
paragragh.children; // HTMLCollection : [HTMLElement]
childNodes는 b태그 하나와, p태그 내부의 텍스트 모두를 잡아오지만
children은 HTMLElement인 b태그 하나만 잡아오게 된다.
위 예시처럼 node와 element를 불러오는 DOM property를 구분하고, 어떻게 다른지 알아야 제대로 활용할 수 있다.
'Javascript' 카테고리의 다른 글
[JS] 구조분해할당 Destructuring assignment (0) | 2022.05.04 |
---|---|
[JS] 조건부 삼항 연산자 (Conditional operator) (0) | 2022.04.28 |
[JS] 자바스크립트의 Class 문법 (0) | 2022.02.13 |
[JS] Prototype 개념 정리 (0) | 2022.02.07 |
[JS] Reference data type 개념 정리 (0) | 2022.01.29 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 리액트
- Prototype
- promise
- JS
- 삼항조건연산자중복사용
- ES6
- Ternary
- javascript
- Callback
- 개념정리
- callsignature
- class
- JSX
- scrollEvent
- Prettier
- 생각정리
- CSS
- Til
- typescript
- Asynchronous
- 구조분해할당
- 조건부삼항연산자
- DOM
- VSCode
- destructuring
- notworking
- Synchronous
- JQuery
- 다중조건삼항연산자
- 타입스크립트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함