2012-10-14 21 views
0

我試圖讓身體內部的所有以下標記(輸入,A和按鈕) 有沒有辦法做到這一點,而不必循環通過身體內的所有標籤使用JavaScript獲取身體中的特定標記元素

var allInputTags = document.body.getElementsByTagName('*'); 

我當時就想,這樣做

var inputtags = document.body.getElementsByTagName('INPUT'); 
var atags = document.body.getElementsByTagName('A'); 
var buttontags = document.body.getElementsByTagName('BUTTON'); 

var allTags = inputtags + atags + buttontags; 

但我認爲這樣,我不會得到在他們出現在身體的順序的元素。

+3

'inputtags + atags + buttontags'不符合您的想法。 –

+2

您需要如何跨瀏覽器? ['document.querySelectorAll('input,a,button')'](https://developer.mozilla.org/en-US/docs/DOM/Document.querySelectorAll)是一種可能性。 –

+0

@FelixKling,ya我不確定 – Kaiusee

回答

2

如果瀏覽器支持querySelectorAll[MDN],你可以這樣做:

var allTags = document.querySelectorAll('input, a, button'); 

The elements are returned in document order。有關支持querySelectorAll的瀏覽器列表,請參閱caniuse.com

在所有其他瀏覽器中,您必須使用getElementsByTagName,但是我認爲要獲取元素將非常困難。

您也可以考慮使用選擇器引擎,如Sizzle(jQuery使用的引擎)。或者如果你打算做複雜的DOM操作,jQuery本身。

+0

就桌面瀏覽器而言'querySelectorAll'具有出色的支持。 – Ana

+0

謝謝,這很有幫助 – Kaiusee

1

您可以使用Array.concat

var allTags = inputtags.concat(atags, buttontags); 
+0

這不會按照它們在文檔中出現的順序給出元素。 – Guffa