我对Document
和Element
之间的关系感到非常困扰,因为我发现ul
元素也可以使用getElementsByTagName
方法来获取其后代。< / p>
我可以理解document
对象作为Document
的一个实例,具有从Document
继承的那些方法。但我无法理解为什么Element
的实例也有这些方法。
这些方法来自哪里? Document
和Element
之间的关系是什么?
答案 0 :(得分:3)
严格地说,Document.getElementsByTagName
和Element.getElementsByTagName
是不同的方法。但是Document和Element都有这样一个方法是有意义的:一个文件有&#34; child&#34;元素和元素也是如此。
要回答更广泛的问题,Document和Element都会从Node继承(与DocumentFragment和其他一些接口一样)。 Node定义了Document和Element共有的许多属性和方法,例如nodeType
,childNodes
和appendChild()
。正如MDN所指出的那样,&#34;这些接口可能在方法和属性不相关的特定情况下返回null,&#34;所以例如document.parentNode
返回null
。但事实证明,您的示例getElementsByTagName
并未由Node定义 - 它由Document和Element分别定义。
为了理解DOM,MDN(所有上述链接都是领导者)是你最好的朋友。它不仅会告诉您每种属性和方法的用途,还会告诉您它所定义的接口。