2013-10-22 134 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米

相關問題