querySelector和getElementById方法的区别
一、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。
querySelector和getElementById方法的区别的更多相关文章
- querySelector和getElementById之间的区别
一.概述 今天在看js的时候发现里面的代码基本上都是用querySelector()和querySelectorAll()来获取元素,就有点疑惑为什么不用getElementById(),可能也是因为 ...
- 浅谈querySelector和getElementById之间的区别
前言: 最近学到前端一些知识,看到很多视频上许多老师都用的是querySelector而部分老师用的是getElementById,我就很疑惑,这两有啥区别,都是选择器,于是百度了一下明白了,quer ...
- JavaScript中querySelector()和getElementById()(getXXXByXX)的区别
在日常开发中,使用JavaScript获取元素的时候,最常用的方法就是document.getElementById(getXXXByXX)方法.但是最近发现有很多地方使用的是querySelecto ...
- javascript querySelector和getElementById通过id获取元素的区别
querySelector和getElementById通过id获取元素的区别 <!DOCTYPE html> <html> <head> <meta cha ...
- querySelector与getElementBy系列的区别
getElementBy系列 document.getElementsByTagName('tag'); document.getElementById('id'); document.getElem ...
- django项目----函数和方法的区别
一.函数和方法的区别 1.函数要手动传self,方法不用传 2.如果是一个函数,用类名去调用,如果是一个方法,用对象去调用 举例说明: class Foo(object): def __init__( ...
- python 函数和方法的区别
一.函数和方法的区别 1.函数要手动传self,方法不用传 2.如果是一个函数,用类名去调用,如果是一个额方法,用对象去调用 举例说明: class Foo(object): def __init__ ...
- jQuery中attr和prop方法的区别
jQuery中attr和prop方法的区别。 http://my.oschina.net/bosscheng/blog/125833 http://www.javascript100.com/?p=8 ...
- 【前端】CSS隐藏元素的方法和区别
CSS隐藏元素的方法和区别 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
随机推荐
- LM_ReadImgMode.js PC单页轮播读图模式组件,零依赖!
LM_ReadImgMode.js PC单页轮播读图模式组件,零依赖! github:http://dtdxrk.github.io/LM-ReadImgMode/ TXT 1.全新的2.0版本,脱离 ...
- RF之条件判断、初始化清除-4
条件判断: rf中用run keyword if 关键字做条件判断,以此来达到类似在python中if ...else...条件判断的功能. 注意:ELSE IF一定都是大写的,不然运行 ...
- 方法重载overload与方法重写overwrite
方法重载overload: 在同一个类中,出现相同的方法名,与返回值无关,参数列表不同:1参数的个数不同 2参数类型不同 在调用方法时,java虚拟机会通过参数列表来区分不同同名的方法 方法重写ove ...
- Google BERT
概述 BERT的全称是Bidirectional Encoder Representation from Transformers,即双向Transformer的Encoder,因为decoder是不 ...
- qt qml Treeview使用记录--设置每个Item的图片logo,高度
这篇帮助很大: https://blog.csdn.net/qq_32116695/article/details/81298585, 代码如下: TreeView { id: viewTree an ...
- Linux 脚本语言入门
0.脚本编写初步介绍 (1)脚本第一行以 #!/bin/sh 开始,也可以用 #!/bin/bash 开始,但是第一行必须以这种方式开始. (2)脚本名需要以.sh结尾 (3)#开头的句子表示注释 ( ...
- spring boot配置文件application.properties配置JPA以及数据源
1.application.properties配置jpa模板 spring.datasource.url=jdbc:mysql://localhost:3306/springboottest?use ...
- Python31之类和对象1(三大特征:多封继——多疯子)
一.对象: Python即是面向对象的编程也是面向过程的编程语言,其内部可谓是无处不对象,我们所熟知的列表,字符串等工厂函数本质上都是对象.对象其实是对属性和方法的封装. 属性是对象的静态特征 方法是 ...
- FPS 游戏实现GDI透视
FPS游戏可以说一直都比较热门,典型的代表有反恐精英,穿越火线,绝地求生等,基本上只要是FPS游戏都会有透视挂的存在,而透视挂还分为很多种类型,常见的有D3D透视,方框透视,还有一些比较高端的显卡透视 ...
- ubuntu配置fastdfs+Nginx
全程参考主线来自:https://blog.csdn.net/xiaoxie762457/article/details/80690841(文中图片失效不造成影响) Nginx安装主要参考:https ...