文档和元素之间的关系是什么?为什么父元素也有getElementsByTagName方法

What is the relationship between Document and Element? Why does a parent element also have getElementsByTagName method?

本文关键字:元素 getElementsByTagName 方法 为什么 是什么 之间 关系 文档      更新时间:2023-09-26

自从我发现ul元素也可以使用getElementsByTagName方法来获取其子元素以来,我一直对DocumentElement之间的关系感到非常困扰。

我可以理解,document对象作为Document的实例,具有继承自Document的那些方法。但我不明白为什么Element的一个实例也有这些方法。

这些方法来自哪里?DocumentElement之间有什么关系?

严格来说,Document.getElementsByTagNameElement.getElementsByTagName是不同的方法。但Document和Element都有这样一个方法是有意义的:文档有"子"元素,元素也有。

为了回答您更广泛的问题,Document和Element都继承自Node(DocumentFragment和其他一些接口也是如此)。Node定义了许多Document和Element通用的属性和方法,例如nodeTypechildNodesappendChild()。正如MDN所指出的,"在方法和属性不相关的特定情况下,这些接口可能会返回null",例如document.parentNode返回null。但事实证明,您的示例getElementsByTagName不是由Node定义的,而是由Document和Element分别定义的。

为了理解DOM,MDN(上面所有链接的指向)是您最好的朋友。它不仅会告诉你每个属性和方法的用途,还会告诉你它在哪个接口中定义。