Q.
querySelectorAll 메소드로 골라온 객체는 어떤 타입의 객체야?
A.
querySelectorAll 메소드로 골라온 객체는 NodeList 타입의 객체입니다.
NodeList란?
NodeList는 노드(Node)들의 목록을 나타내는 객체입니다.
Node는 HTML 요소(Element), 텍스트 노드, 주석 등 DOM 트리의 구성 요소를 의미합니다.
querySelectorAll은 주어진 CSS 선택자와 일치하는 모든 요소들을 NodeList 객체에 담아 반환합니다.
NodeList의 특징
유사 배열 객체: NodeList는 배열과 유사한 구조를 가지고 있어 length 속성을 통해 항목 개수를 확인하고, 인덱스를 사용하여 각 항목에 접근할 수 있습니다.
live collection: NodeList는 DOM의 변경 사항을 실시간으로 반영하는 "live collection"입니다. 즉, DOM 구조가 변경되면 NodeList의 내용도 자동으로 업데이트됩니다.
배열 메서드 사용 제한: NodeList는 배열이 아니므로 forEach, map, filter 등의 배열 메서드를 직접 사용할 수 없습니다. 하지만 Array.from()이나 for...of 루프를 사용하여 배열로 변환하거나 순회할 수 있습니다.
JavaScript
const paragraphs = document.querySelectorAll('p'); // 모든요소를 선택
console.log(paragraphs); // NodeList 객체 출력
console.log(paragraphs.length); // NodeList의 길이 (항목 개수) 출력
console.log(paragraphs[0]); // 첫 번째 요소 출력
// NodeList 순회 (forEach 사용)
Array.from(paragraphs).forEach(paragraph => {
console.log(paragraph.textContent);
});
// NodeList 순회 (for...of 루프 사용)
for (const paragraph of paragraphs) {
console.log(paragraph.textContent);
}
주의 사항:
querySelectorAll이 아무 요소도 찾지 못하면 빈 NodeList를 반환합니다.
NodeList는 DOM의 변경 사항을 실시간으로 반영하므로,
NodeList를 순회하는 동안 DOM 구조가 변경되면 예기치 않은 결과가 발생할 수 있습니다.
핵심:
querySelectorAll 메서드는 NodeList 객체를 반환합니다.
NodeList는 유사 배열 객체이지만 배열 메서드를 직접 사용할 수 없으므로,
Array.from()이나 for...of 루프를 사용하여 순회해야 합니다.
NodeList는 live collection이므로 DOM 변경 사항에 주의해야 합니다.
querySelector 와의 차이점
- querySelector 메소드는 CSS 선택자와 일치하는 첫 번째 요소를 찾아 Element 객체를 반환합니다.
- 요소를 찾지 못하면 null을 반환합니다.( querySelector 의 경우에)
- querySelectorAll과 달리 NodeList가 아닌 단일 Element 객체를 반환하므로, 배열 메서드를 사용할 필요 없이 바로 해당 요소에 접근하고 조작할 수 있습니다.
'언어 및 도구들 공부 > Javascript' 카테고리의 다른 글
자바스크립트에서의 position? (0) | 2024.09.02 |
---|---|
setAttribute (0) | 2024.09.02 |
자바스크립트 beforebegin, afterbegin, afterend, beforeend (0) | 2024.09.01 |
previousElementSibling (0) | 2024.09.01 |
별찍기 문제 (0) | 2024.08.31 |