如何检查 DOM 节点是否是“html”节点
How to check if a DOM node is the `html` node
编辑:这是我问过的最愚蠢的问题。我会保留它,提醒自己不要太快问问题。
如何检查我选择的 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 节点(div
、span
等)的检查。问题是我的代码爬上 DOM 并检查某个属性;如果代码找不到该属性,它将到达 html
节点并引发错误,因为以下行:
if (node.tagName.toUpperCase() !== 'OBJECT') { }
当node
是html
节点时,这会引发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参考所做的那样!
相关文章:
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- node.js测试事件是否是在不使用超时的情况下使用sinon.js发出的
- 确定var是否是javascript中的elementFinder对象的方法是什么
- 检查对象是否是mongo游标
- 如何检查DOM节点是否继承自构造函数
- 是否可以测试javascript函数是否是构造函数
- 检查请求的用户是否是django中的所有者
- 角度 2 :检查路由名称是否是当前名称
- 我怎么知道日期是否是星期六
- 从不断变化的动作创建者那里获取商店数据是否是一种常见的做法
- 如何确定父节点是否有子节点
- 力导向图-如果节点同时是源和目标,则定义节点的颜色
- 在node.js/ssocket.io中,如何判断对象是否是套接字的实例
- 在jQuery中,如何测试一个元素是否是同一类的多个元素中的第一个
- 是否有跨浏览器和跨框架的方法来检查对象是否是HTML元素
- 如何检查 DOM 节点是否是“html”节点
- 如何检查新克隆的节点是否是javascript中的最后一个节点
- 使用 JQuery 检查所选文本是否是较大节点的一部分
- 如何知道所选节点是否是树中的一片叶子?(ExtJS 4)
- 元素属性是否是节点