元素的引用.为了避免IE中存在的这个问 题,最好的办法是不让表单字段的name特性与其他元素的ID相同. 另一个常用于取得元素引用的方法是getElementsByTagName().这个方法接受一个参数,即要取得元素的标签名,而返回的是包含零或多个元素的NodeList.在HTML文档中,这个方法会返回一个HTMLCollection对象,作为一个“动态"集合,该对象与NodeList非常类似.例如,下列代码会取得页面中所有的
元素,并返回一个HTMLCollection:
var images=document.getElementsByTagName("img");
这行代码会将一个HTMLCollec tion对象保存在1mages变量中.与NodeList对象类似,可以使用方括号语法或item()方法来访问HTMLCollection对象中的项.而这个对象中元素的数量则可
以通过其length属性取得,如下面的例子所示:
alert(images.length); //输出图像的数量
alert( images[0].src); //输出第一个图像元素的src特性
alert( images.item(o).src); //输出第一个图像元素的src特性
HTMLCollection对象还有一个方法,叫做namedItem().使用这个方法可以通过元素的name特性取得集合中的项.例如,假设上面提到的页面中包含如下
元素:
那么就可以通过如下方式从Images变量中取得这个
元素:
var mylmage=images.namedltem("mylmage");
在提供按索引访问项的基础上,HTMLCollection还支持按名称访问项,这就为我们取得实际想要的元素提供了便利.而且,对命名的项也可以使用方括号语法来访问,如下所示:
var mylmage=Images[ "mylmage"];
对HTMLCollection而言,我们可以向方括号中传入数值或字符串形式的索引值.在后台,对数值索引就会调用item(),而对字符串索引就会调用namedltem()。要想取得文档中的所有元素,可以向getElementsByTagName()中传入"*".在JavaScript及CSS中,星号(*)通常表示"全部".下面看一个例子:
var allElements = document.getElementsByTagName("*");
仅此一行代码返回的HTMLCollection中,就包含了整个页面中的所有元素——按照它们出现的先后顺序.换句话说,第一项是元素,第二项是元素,以此类推.由于IE将注释
(Comment)实现为元素(Element),因此在IE中调用getElementsByTagName("*")将会返回所有注释节点.虽然标准规定标签名需要区分大小写,但为了最大限度地与既有HTML页面兼容,传给getElementsByTagName()的标签名是不需要区分大小写的.但对于XML页面而言(包括XHTML),getElementsByTagName()方法就会区分大小写.第三个方法,也是只有HTMLDocument类型才有的方法,是getElementsByName().顾名思义,这个方法会返回带有给定name特性的所有元素.最常使用getElementsByName()方法的情况是取得单选按钮;为了确保发送给浏览器的值正确无误,所有单选按钮必须具有相同的name特性,如下面的例子所示:
如这个例子所示,其中所有单选按钮的name特性值都是"color",但它们的ID可以不同.ID的作用在于将