五、getElementsByTagName()
5.1 概述
表示通过标签名得到类数组对象
参数:标签名
返回值:类数组对象
调用对象:可以是document,还可以是任何一个节点对象(表示从该节点范围内进行查找)
5.1.1 该类数组对象中保存的是元素对象
该数组对象可以通过索引值读取每一项的值,也可以使用length
属性。
如果标签只有一个,仍然需要通过索引值获取元素对象。
1 | <p>1</p> |
5.1.2 不管标签嵌套多深都可以查找到
1 | <p>1</p> |
5.1.3 类数组对象保存数据时只和标签出现的位置有关,和嵌套没有关系
1 | <div id="box1"> |
5.2 连续打点
5.2.1 不使用连续打点,分条书写
1 | <div id="box"> |
5.2.2 元素对象改变,再次打点
可以将上面语句使用连续打点,当元素对象改变,再次打点表示从该元素对象进行调用。
1 | // 连续打点,元素对象改变,表示从该元素进行使用,不会每次都从最开始document进行查找 |
5.2.3 getElementsByTagName()
也可以连续打点
1 | document.getElementsByTagName("div")[0].getElementsByTagName("p")[1].style.backgroundColor = "orange"; |
5.2.4 案例:表格隔行变色
1 | <style> |
5.3 批量操作
通过标签名得到类数组对象,将每一元素对象添加相同的事件。
1 | // 获取类数组对象 |
由于闭包的影响,i记住了4
5.3.1 IIFE解决:
1 | // 获取类数组对象 |
5.3.2 this关键字
this
关键字,表示触发事件的该对象。
原对象具有的属性和方法,this也具有同样的属性和方法。
this
只能使用在函数内部。
1 | // 获取类数组对象 |
this
只和触发事件的对象有关,此处this
相当于ps[i]
5.3.3 this工作中实际使用:
1 | // 获取类数组对象 |
5.4 对应思想
我们经常利用其他元素控制另外的元素,他们索引值相同。
1 | <div class="box" id="box1"> |
5.5 排他思想
只有点击的对应元素改变,其他都恢复原状
1 | // 对应+排他 |