JS如何获取DOM对象?querySelector()与querySelectorAll()有什么区别?

818 阅读2分钟

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对象集合(伪数组)

如果没有匹配到,则返回伪数组——空的伪数组

得到的是一个伪数组:(有哪些特点)

  1. 有长度有索引号的数组
  2. 但是没有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()——能获取多个元素,得到的是伪数组,需要遍历得到每一个元素,才能进行操作,如果没有获得,则返回伪数组(空的数组)


\

\