节点对象和元素对象的区别

在看《 JavaScript 高级程序第3版》DOM 一章的时候,对于节点一词很疑惑,在里面判断节点类型的例子中:

if (someNode.nodeType == Node.ELEMENT_NODE) {
    alert("Node is an element.")
}

也就是说,如果两者相等,则意味着 someNode 这个节点是一个元素,那元素节点和元素是相同的概念吗?如果是的话,节点与元素的区别在哪?


简单来说,节点是 DOM 层次结构中任何类型对象的通用名称,有各种类型的节点比如元素节点,文本节点,注释节点等等(如图所示,来自MDN)。

元素节点是一种特定类型的节点,可以当作 HTML 中的元素,通过 nodeType 属性可以查明节点的类型,通过 childNodes,firstChild 或 lastChild 属性来访问子节点。

<p id="para">Hello World!</p>
<script>
    var p = document.getElementById("para");    // 取得<p>元素的引用,可看成元素节点
    var text = p.firstChild.nodeValue;    // 访问元素节点的子节点文本节点,取得包含的文本
    console.log(p);    // <p id="para">Hello World!</p>
    console.log(text);    // "Hello world!"
</script>

参考
https://stackoverflow.com/questions/9979172/difference-between-node-object-and-element-object

posted @ 2020-08-07 10:33  wilburn  阅读(1278)  评论(0)    收藏  举报