我对Node对象和Element对象完全感到困惑。
document.getElementById()
返回Element对象,同时document.getElementsByClassName()
返回NodeList对象(元素或节点的集合?)
如果div是元素对象,那么div节点对象呢?
什么是节点对象?
文档对象,元素对象和文本对象也是节点对象吗?
根据David Flanagan的书“文档对象,其元素对象和文本对象都是Node对象”。
那么,一个对象如何能够继承Element对象以及Node对象的属性/方法呢?
如果是的话,我猜想节点类和元素类在原型原型树中是相关的。
<div id="test">
<p class="para"> 123 </p>
<p class="para"> abc </p>
</div>
<p id="id_para"> next </p>
document.documentElement.toString(); // [object HTMLHtmlElement]
var div = document.getElementById("test");
div.toString(); // [object HTMLDivElement]
var p1 = document.getElementById("id_para");
p1.toString(); // [object HTMLParagraphElement]
var p2 = document.getElementsByClassName("para");
p2.toString(); //[object HTMLCollection]
Node
是实现一个树状结构,所以它的方法是firstChild
,lastChild
,childNodes
等,这更是一个类的一个通用的树结构。然后,一些
Node
对象也是Element
对象。Element
继承自Node
。Element
object实际上代表HTML文件中由标记指定的对象<div id="content"></div>
。的Element
类中定义的属性和诸如方法attributes
,id
,innerHTML
,clientWidth
,blur()
,和focus()
。一些
Node
对象是文本节点,而不是Element
对象。每个Node
对象都有一个nodeType
属性,该属性指示HTML文档的节点类型:我们可以在控制台中看到一些示例:
上方的最后一行显示
Element
继承自Node
。(由于,该行将无法在IE__proto__
中使用。需要使用Chrome,Firefox或Safari)。顺便说一下,该
document
对象是节点树的顶部,并且document
是一个Document
对象,并且也Document
继承自该对象Node
:以下是有关Node和Element类的一些文档:
https : //developer.mozilla.org/zh-CN/docs/DOM/Node
https://developer.mozilla.org/zh-CN/docs/DOM/Element