JS: Node Type
What is Node Type
Node type is a integer that indicates the type of the node.
There are unusual kind of nodes. For example:
- The first line in a HTML file the “DTD” such as
<!doctype html>
. - comments
<!-- abc -->
is also a node. - Certain whitespace between tags is also a node. 〔see DOM: Whitespace Nodes〕
normally, you just want to know the Node Name (aka tag name) or Node value (the content of a node.) But because some nodes are Whitespace Nodes or comment or special, you need to check if node type is the right type.
Get Node Type
node.nodeType
-
Return node's type.
The return value is a number. Usually 1 or 3. “1” means it's a HTML/XML element. “3” means its content.
Here is a complete list of possible return values.
value | meaning |
---|---|
1 | ELEMENT_NODE |
2 | ATTRIBUTE_NODE |
3 | TEXT_NODE |
4 | CDATA_SECTION_NODE |
5 | ENTITY_REFERENCE_NODE |
6 | ENTITY_NODE |
7 | PROCESSING_INSTRUCTION_NODE |
8 | COMMENT_NODE |
9 | DOCUMENT_NODE |
10 | DOCUMENT_TYPE_NODE |
11 | DOCUMENT_FRAGMENT_NODE |
12 | NOTATION_NODE |
// show the root node “document”'s type, name, value document.nodeType // 9 document.nodeName // "#document" document.nodeValue // null
// root element has 2 child document.childNodes.length // 2 // this is <!doctype html> document.childNodes[0].nodeType // 10 document.childNodes[0].nodeName // "html" document.childNodes[0].nodeValue // null // this is <html> document.childNodes[1].nodeType // 1 document.childNodes[1].nodeName // "HTML" document.childNodes[1].nodeValue // null
// example of a element node // first paragraph element let xx = document.getElementsByTagName("p")[0]; xx.nodeType // 1 xx.nodeName // "P" xx.nodeValue // null
// example of a text node // first paragraph's content let xx = document.getElementsByTagName("p")[0].firstChild; xx.nodeType // 3 xx.nodeName // "#text" xx.nodeValue // a string of p's content
As of 2012-04-29, this works in all major browsers.