如何检查 DOM 节点是否是“html”节点

How to check if a DOM node is the `html` node

本文关键字:节点 是否是 html DOM 何检查 检查      更新时间:2023-09-26

编辑:这是我问过的最愚蠢的问题。我会保留它,提醒自己不要太快问问题。

如何检查我选择的 DOM 节点是否是html节点?我注意到它没有通常的属性。例如:

var div = document.getElementsByTagName('div')[0];
var html = document.getElementsByTagName('html');
div instanceof HTMLElement; // true
html instanceof HTMLElement; // false
div.tagName; // "DIV"
html.tagName; // undefined

特别是,我想要一个适用于所有 DOM 节点(divspan 等)的检查。问题是我的代码爬上 DOM 并检查某个属性;如果代码找不到该属性,它将到达 html 节点并引发错误,因为以下行:

if (node.tagName.toUpperCase() !== 'OBJECT') { }

nodehtml节点时,这会引发TypeError,因为node.TagName未定义。

提前谢谢。

问题是您正在查看 getElementsByTagName 返回的数组,而不是返回的第一个元素。试试这个:

var div = document.getElementsByTagName('div')[0];
var html = document.getElementsByTagName('html')[0]; // notice [0]
div instanceof HTMLElement; // true
html instanceof HTMLElement; // true
div.tagName; // "DIV"
html.tagName; // "HTML"

注意:在 Chrome 开发者工具版本 30.0.1599.101 m 中进行了测试

您的变量html不是单个节点,因此为什么它与div不同。添加缺少的[0]就像您为div参考所做的那样!