一、querySelector() 的定义

  • querySelector() 方法选择指定 CSS 选择器的第一个元素
  • querySelectorAll() 方法选择指定的所有元素

二、与 getElementBy 的区别

这两个新添加的 API 与 getElementById() / getElementsByTagName() 有什么区别呢?

举个例子:

HTML 代码:

<ul>
<li>111</li>
<li>222</li>
<li>333</li>
</ul>

JS 代码:

{
let ul=document.getElementsByTagName('ul')[];
let list=ul.getElementsByTagName('li');
console.log(list);
}
{
let ul=document.querySelector('ul');
let list=ul.querySelectorAll('li');
console.log(list);
} // 输出结果

以上代码中,getElementBy 方法返回的结果是 HTMLCollection,而 querySelector 方法返回的结果是 NodeList;

另外,query 选择符选出来的元素是静态的,而 getElement 这种方法选出的元素的动态的。

这里的静态指的是选出的元素不会随着文档操作而改变。

操作实例如下:

HTML 代码:

<ul>
<li>111</li>
<li>222</li>
<li>333</li>
</ul>

用 querySelector 操作元素:

var ul=document.querySelector('ul');
var list=ul.querySelectorAll('li');
for(var i=;i<;i++){
ul.appendChild(document.createElement('li'));
}
// 这时创建了3个新li,添加在ul列表中
console.log(list.length)
// 输出3,输出的是添加前li的数量,而非此时li的总数量6

用 getElement 操作元素:

var ul=document.getElementsByTagName('ul')[];
var list=ul.getElementsByTagName('li');
for(var i=;i<;i++){
ul.appendChild(document.createElement('li'));
}
// 这时创建了3个新li,添加在ul列表中
console.log(list.length)
// 输出6

以上代码中,querySelector 选择的 li 元素不会随着文档的操作而从3变为6;

在性能上,Chrome 浏览器下 getElementBy 方法的执行速度基本都高于 querySelector。

最新文章

  1. checkbox &amp; radio 的对齐问题
  2. MyEclipse黑色主题
  3. 在使用dot。js中的值中有空格出现后,进行去除
  4. RHEL7.2
  5. Java网络编程——UDP实例
  6. PHP使用libevent实现高性能httpServer
  7. Ubuntu CTRL+ALT+F1~F6 进入命令模式后不支持中文显示的解决办法
  8. 凸包稳定性判断:每条边上是否至少有三点 POJ 1228
  9. [MVC] - 异步调用后台的常用方法。
  10. C++学习笔记(十三):类、包和接口
  11. Tomcat 内存与优化篇
  12. Bone Collector II(HDU 2639 DP)
  13. A simple Test Client built on top of ASP.NET Web API Help Page
  14. Spring中AOP简介与切面编程的使用
  15. Spring:(二)DI依赖注入方式
  16. zigbee端口的理解
  17. SQLServer基础之数据页类型:GAM,SGAM,PFS
  18. 初学c# -- 开始学directx
  19. centos7环境开启WIFI热点
  20. R语言网页爬虫

热门文章

  1. Meta标签中的http-equiv属性
  2. Django_静态文件的配置(STATIC_URL)
  3. 【leetcode算法-简单】7.整数反转
  4. Chipseq数据库的建立
  5. Go资源被墙最快解决方案
  6. 深入理解Flink核心技术及原理
  7. (一)linux 学习 -- 在文件系统中跳转
  8. PAT(B) 1086 就不告诉你(Java)
  9. triples I(按位或运算及3的特性)(2019牛客暑期多校训练营(第四场)D)
  10. 怎样让ssh连接保持连接, 而不会因为没有操作而中断