DOM으로 html 요소를 조작할 때, 어떤 요소의 부모 요소나 어떤 요소의 자식 요소를 찾아야 할 때가 있다.
부모 요소를 찾기 위해선 parentElement와 parentNode를 사용할 수 있고,
자식 요소를 찾기 위해선 children과 childNode를 사용할 수 있다.
어떤 차이가 있는건지 궁금해져 찾아보다가 이 둘의 차이점을 정리 해 보려 한다.
결론: Node의 여러 타입 중 하나가 element 이다.
node > element
결론: 노드 타입의 반환이 필요한 경우 parentNode를 사용, element만 필요한 경우라면 parentElement 사용(굳이 parentNode를 사용할 필요가 없음)
둘 다 특정 노드의 children을 가져오지만, childNodes는 NodeList 형태로 가져오고 children은 HTMLCollection 형태로 가져온다.
<html>
<body>
<div>
<p>test1</p>
test2
<!-- test3 -->
</div>
</body>
</html>
위와 같은 html 문서가 있을 때, 둘의 차이를 확인해 보자
const elDiv = document.querySelector('div');
elDiv.childNodes;
elDiv.children;
결론: children을 사용하면 자식 노드들 중 엘리먼트 노드만 가져오고, childNodes를 사용하면 모든 타입의 자식 노드들을 가져올 수 있다.