元素的引用.為了避免IE中存在的這個問 題,最好的辦法是不讓表單字段的name特性與其他元素的ID相同. ? 另一個常用于取得元素引用的方法是getElementsByTagName().這個方法接受一個參數(shù),即要取得元素的標(biāo)簽名,而返回的是包含零或多個元素的NodeList.在HTML文檔中,這個方法會返回一個HTMLCollection對象,作為一個“動態(tài)"集合,該對象與NodeList非常類似.例如,下列代碼會取得頁面中所有的
元素,并返回一個HTMLCollection:
? ?var images=document.getElementsByTagName("img");
? ?這行代碼會將一個HTMLCollec tion對象保存在1mages變量中.與NodeList對象類似,可以使用方括號語法或item()方法來訪問HTMLCollection對象中的項.而這個對象中元素的數(shù)量則可
? 以通過其length屬性取得,如下面的例子所示:
? ?alert(images.length); //輸出圖像的數(shù)量
? ?alert( images[0].src); //輸出第一個圖像元素的src特性
? ?alert( images.item(o).src); //輸出第一個圖像元素的src特性
? ?HTMLCollection對象還有一個方法,叫做namedItem().使用這個方法可以通過元素的name特性取得集合中的項.例如,假設(shè)上面提到的頁面中包含如下
元素:
? ?
? 那么就可以通過如下方式從Images變量中取得這個
元素:
? var mylmage=images.namedltem("mylmage");
? 在提供按索引訪問項的基礎(chǔ)上,HTMLCollection還支持按名稱訪問項,這就為我們?nèi)〉脤?shí)際想要的元素提供了便利.而且,對命名的項也可以使用方括號語法來訪問,如下所示:
? var mylmage=Images[ "mylmage"];
? 對HTMLCollection而言,我們可以向方括號中傳入數(shù)值或字符串形式的索引值.在后臺,對數(shù)值索引就會調(diào)用item(),而對字符串索引就會調(diào)用namedltem()。要想取得文檔中的所有元素,可以向getElementsByTagName()中傳入"*".在JavaScript及CSS中,星號(*)通常表示"全部".下面看一個例子:
? var allElements = document.getElementsByTagName("*");
? 僅此一行代碼返回的HTMLCollection中,就包含了整個頁面中的所有元素——按照它們出現(xiàn)的先后順序.換句話說,第一項是元素,第二項是元素,以此類推.由于IE將注釋
(Comment)實(shí)現(xiàn)為元素(Element),因此在IE中調(diào)用getElementsByTagName("*")將會返回所有注釋節(jié)點(diǎn).雖然標(biāo)準(zhǔn)規(guī)定標(biāo)簽名需要區(qū)分大小寫,但為了最大限度地與既有HTML頁面兼容,傳給getElementsByTagName()的標(biāo)簽名是不需要區(qū)分大小寫的.但對于XML頁面而言(包括XHTML),getElementsByTagName()方法就會區(qū)分大小寫.第三個方法,也是只有HTMLDocument類型才有的方法,是getElementsByName().顧名思義,這個方法會返回帶有給定name特性的所有元素.最常使用getElementsByName()方法的情況是取得單選按鈕;為了確保發(fā)送給瀏覽器的值正確無誤,所有單選按鈕必須具有相同的name特性,如下面的例子所示:
?
? 如這個例子所示,其中所有單選按鈕的name特性值都是"color",但它們的ID可以不同.ID的作用在于將