2013-10-22 140 views
0

编辑:这是我问过的最愚蠢的问题。我会保留它,提醒自己不要太快提问。如何检查一个DOM节点是否是`html`节点

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

这将引发TypeErrornodehtml节点,因为node.TagName是不确定的。

在此先感谢。

回答

1

您的变量html不是单个节点,因此它与div不同。添加缺少的[0]就像你为你的分区参考!

+0

呀,在控制台你会得到一个不确定的,因为你设置一个变种,但没有做任何事情用它。尝试'var html = document.getElementsByTagName('html')[0]; console.log(html);'这将产生一个可扩展的html节点树。 – EmmyS

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米

相关问题