javascript基础学习系列四百零六:Document 类型(定位元素)

本文介绍了在JavaScript中使用DOM的常见操作,如getElementById和getElementsByTagName获取元素,以及HTMLCollection对象的使用,包括其获取方式、特点和在处理单选按钮时的应用。
摘要由CSDN通过智能技术生成

使用 DOM 最常见的情形可能就是获取某个或某组元素的引用,然后对它们执行某些操作。
document 对象上暴露了一些方法,可以实现这些操作。getElementById()和 getElementsByTagName()就是 Document 类型提供的两个方法。
getElementById()方法接收一个参数,即要获取元素的 ID,如果找到了则返回这个元素,如果没找到则返回 null。参数 ID 必须跟元素在页面中的 id 属性值完全匹配,包括大小写。比如页面中有
以下元素:

可以使用如下代码取得这个元素:

但参数大小写不匹配会返回 null:

如果页面中存在多个具有相同 ID 的元素,则 getElementById()返回在文档中出现的第一个元素。
getElementsByTagName()是另一个常用来获取元素引用的方法。这个方法接收一个参数,即要获取元素的标签名,返回包含零个或多个元素的 NodeList。在 HTML 文档中,这个方法返回一个
HTMLCollection 对象。考虑到二者都是“实时”列表,HTMLCollection 与 NodeList 是很相似的。
例如,下面的代码会取得页面中所有的元素并返回包含它们的 HTMLCollection:

这里把返回的 HTMLCollection 对象保存在了变量 images 中。与 NodeList 对象一样,也可以使用中括号或 item()方法从 HTMLCollection 取得特定的元素。而取得元素的数量同样可以通过length 属性得知,如下所示:

alert(images[0].src); // 第一张图片的 src 属性
alert(images.item(0).src); // 同上

HTMLCollection 对象还有一个额外的方法 namedItem(),可通过标签的 name 属性取得某一项的引用。例如,假设页面中包含如下的元素:

那么也可以像这样从 images 中取得对这个元素的引用:

这样,HTMLCollection 就提供了除索引之外的另一种获取列表项的方式,从而为取得元素提供了便利。对于 name 属性的元素,还可以直接使用中括号来获取,如下面的例子所示:

对 HTMLCollection 对象而言,中括号既可以接收数值索引,也可以接收字符串索引。而在后台,数值索引会调用 item(),字符串索引会调用 namedItem()。
要取得文档中的所有元素,可以给 getElementsByTagName()传入*。在 JavaScript 和 CSS 中,*一般被认为是匹配一切的字符。来看下面的例子:

这行代码可以返回包含页面中所有元素的 HTMLCollection 对象,顺序就是它们在页面中出现的顺序。因此第一项是元素,第二项是元素,以此类推。
HTMLDocument 类型上定义的获取元素的第三个方法是 getElementsByName()。顾名思义,这个方法会返回具有给定 name 属性的所有元素。getElementsByName()方法最常用于单选按钮,因为同一字段的单选按钮必须具有相同的 name 属性才能确保把正确的值发送给服务器,比如下面的例子:

 <legend>Which color do you prefer?</legend> 
 <ul> 
 <li> 
 <input type="radio" value="red" name="color" id="colorRed"> 
 <label for="colorRed">Red</label> 
 </li> 
 <li> 
 <input type="radio" value="green" name="color" id="colorGreen"> 
 <label for="colorGreen">Green</label> 
 </li> 
 <li> 
 <input type="radio" value="blue" name="color" id="colorBlue">
 <label for="colorBlue">Blue</label> 
 </li> 
 </ul> 
</fieldset> 

这里所有的单选按钮都有名为"color"的 name 属性,但它们的 ID 都不一样。这是因为 ID 是为了匹配对应的

与 getElementsByTagName()一样,getElementsByName()方法也返回 HTMLCollection。不过在这种情况下,namedItem()方法只会取得第一项(因为所有项的 name 属性都一样)。
特殊集合
document 对象上还暴露了几个特殊集合,这些集合也都是 HTMLCollection 的实例。这些集合是访问文档中公共部分的快捷方式,列举如下。
 document.anchors 包含文档中所有带 name 属性的元素。
 document.applets 包含文档中所有元素(因为元素已经不建议使用,所以这个集合已经废弃)。
 document.forms 包含文档中所有元素(与 document.getElementsByTagName (“form”)
返回的结果相同)。
 document.images 包含文档中所有元素(与 document.getElementsByTagName (“img”)
返回的结果相同)。
 document.links 包含文档中所有带 href 属性的元素。
这些特殊集合始终存在于 HTMLDocument 对象上,而且与所有 HTMLCollection 对象一样,其内容也会实时更新以符合当前文档的内容。

  • 11
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值