[Javascript] node와 element의 차이
Javascript에서 DOM을 다루다 보면
node와 element가 자주 등장합니다.
이 2가지를 다루는 방법이 조금 달라서 헷갈리는 경우가 많은데,
이번 포스팅에서는 node와 element의 차이점을 정리해 보도록 하겠습니다.
node vs element
DOM 문서는 node의 계층 구조로 이루어져 있습니다.
이 node는 여러 가지 다양한 유형이 존재합니다. 요소(element), 텍스트, 주석 등등...
element는 이러한 node의 여러가지 유형 중 한 가지입니다.
위 그림과 같이 element는 여러 가지 node의 유형 중 한 타입입니다.
즉, node는 element의 상위 개념입니다.
좀 더 자세히 설명하면,
element는 html 문서에서 <div>, <p>, <title>과 같은 태그를 사용해서 작성된 node라고 할 수 있습니다.
1. node
<!DOCTYPE html>
<html>
<head>
<title>My Page</title>
</head>
<body>
<!-- Page Body -->
<h2>My Page</h2>
<p id="content">Thank you for visiting my web page!</p>
</body>
</html>
위 문서는 다음과 같은 node 구조를 가지고 있습니다.
위와 같이 node는
태그, 텍스트, 주석 등을 모두 포함합니다.
node의 유형은 Node.nodeType 속성을 이용하여 구분할 수 있는데
목록은 다음과 같습니다.
- Node.ELEMENT_NODE
- Node.ATTRIBUTE_NODE
- Node.TEXT_NODE
- Node.CDATA_SECTION_NODE
- Node.PROCESSING_INSTRUCTION_NODE
- Node.COMMENT_NODE
- Node.DOCUMENT_NODE
- Node.DOCUMENT_TYPE_NODE
- Node.DOCUMENT_FRAGMENT_NODE
Node.ENTITY_REFERENCE_NODE (deprecated)Node.ENTITY_NODE (deprecated)Node.NOTATION_NODE (deprecated)
2. element
앞에서 설명한 것과 같이
element는 node의 한 종류입니다.
주로, <p>, <div> 같은 태그를 사용해서 작성된 노드를 말합니다.
앞의 예제에서 element는
<html>, <head>, <title>, <body>, <h2>, <p>입니다.
우리가 javascript에서 DOM을 탐색하고, 조작할 때는
Node의 다른 형태인 주석이나 텍스트보다는
주로 이 element를 조작하고자 하는 경우가 많습니다.
DOM을 조작하는 방법에는
node를 탐색하는 방법과 element를 탐색하는 방법이 있는데
element를 탐색하는 방법을 사용하면
주석이나 텍스트 등을 제외한 element만을 탐색할 수 있기 때문에
DOM을 조작할 때는 주로 element를 탐색하는 방법을 많이 사용합니다.
간단하게 node와 element의 차이에 대해서 알아보았습니다.