0

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

如何检查我选择的 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') { }

这会抛出一个TypeError何时nodehtml节点,因为node.TagName它是未定义的。

提前致谢。

4

2 回答 2

2

问题是您正在查看返回的数组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 中测试

于 2013-10-22T20:53:40.733 回答
1

您的变量html不是单个节点,因此它不同于div. [0]像您为您的 div 参考一样添加缺失的内容!

于 2013-10-22T20:52:38.470 回答