對getElementsByTagName("*")獲取全部元素的總結

勤勞的插秧哥發表於2014-08-29

var all=document.getElementsByTagName("*")      //獲取整個頁面的標籤元素

alert(all.length);               //返回all長度,即標籤元素個數


好了,下面就是各大瀏覽器各顯獨特的時候了:

你會發現IE返回的元素個數總比firefox和chrome瀏覽器多,且多出的個數還不是固定的,原因如下:

1)IE中(本人用IE8測試),會把網頁頭部的<!DOCTYPE>也認為是一個標籤,且為陣列中第一個標籤,用.tagName檢視其標籤名居然為“!”,沒錯就是一感嘆號!而其他兩個瀏覽器則不會識別為一個標籤。當把開頭的<!DOCTYPE>刪掉時,則IE也不識別。所以一旦存在<!DOCTYPE>,IE返回的總標籤個數+1。

2)當網頁文件中沒有定義<title>標籤時,IE依然會自動預設的新增該標籤,可以用for迴圈遍歷所有標籤.tagName來檢視各標籤,你會在IE中詭異的看到有<title>標籤,即使你網 頁文件中沒有。故再+1。

3)當一些成對出現的標籤如<div></div>等,當去掉後半部分的</div>時,依然識別為一個標籤,當去掉前半部分,只保留後半部分的</div>時,firefox和chrome則不再識別為一個標籤,而IE依然認為後半部分</div>依然是一個標籤元素。當然了,本身就不成對出現的標記如<br/>,<hr/><img/>等標籤除外。     故IE中標籤多出的個數就由文件中的不合格的後半部分標籤個數為準。故+n。


綜上就是IE中獲取所有標籤的個數總比其他瀏覽器多的原因。肯定還有不足,IE還有其餘很多版本,因本人電腦硬體原因,在此就不一一安裝測試。網廣大同行批評,指正,補充,謝。

相關文章