JS如何获取DOM对象?querySelector()与querySelectorAll()有什么区别?
一、根据CSS选择器来获取DOM元素——重点
1. 选择匹配的第一个元素
1.1 语法:
document.querySelector('CSS选择器');
1.2 参数:
包含一个或多个有效的CSS选择器 字符串
1.3 返回值:
CSS选择器匹配的第一个元素,一个HTMLElement对象
如果没有匹配到,则返回null。
2. 选择匹配的多个元素
2.1 语法:
document.querySelectorAll('CSS选择器');
//如:
document.querySelectorAll('ul > li'); // 获取ul下的所有li元素,返回的是伪数组
2.2 参数:
包含一个或多个有效的CSS选择器 字符串
2.3 返回值:
CSS选择器匹配的NodeList对象集合(伪数组)
如果没有匹配到,则返回伪数组——空的伪数组
得到的是一个伪数组:(有哪些特点)
- 有长度有索引号的数组
- 但是没有pop() push() 等数组方法
需要注意的地方:
想要得到里面的每一个对象,则需要遍历(如:for)的方式获得
哪怕只有一个元素,通过querySelectorAll() 获取过来的也是一个伪数组,里面只有一个元素而已
2.4 提问
querySelectorAll() 方法获取到的元素能直接修改吗?
不可以,只能通过遍历的方式,依次给里面的元素做修改
3. 其他获取DOM元素方法(了解)
3.1 根据 id 获取一个元素
document.getElementById('nav');
3.2 根据 标签获取一类元素 获取页面 所有div
document.getElementsByTagName('div');
3.3 根据 类名获取元素 获取页面 所有类名为w的
document.getElementsByClassName('w');
4. querySelector() 和 querySelectorAll() 两者的区别:
querySelector() ——只能选择一个元素,且是第一个元素,可以直接操作。如果没有获得,则返回null
querySelectorAll()——可以选择多个元素,得到的是伪数组,需要遍历得到每一个元素,才能进行操作
5. 注意事项:
querySelector() 和 querySelectorAll() 它们两者小括号里面的参数写CSS选择器,且必须是字符串,也就是必须加引号。
结合以上得:
querySelector() 和 querySelectorAll() 里面的参数要写css选择器,且必须是字符串,也就是必须加引号。
querySelector()——只能获取一个元素,而且是第一个元素,如果没有获得,则返回null
querySelectorAll()——能获取多个元素,得到的是伪数组,需要遍历得到每一个元素,才能进行操作,如果没有获得,则返回伪数组(空的数组)
\
\