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