querySelector 和 getElementById 之间的区别

今天在学习vue源码的过程中,发现了一种获取dom元素时,我不经常使用的document.querySelector方法,乍一看querySelector还以为是jquery上的方法,谁让他们的名字都有个query
那么querySelector 和 getElementById、getElementsByClassname、getElementsByTagName
这类方法究竟有什么区别?

查阅文档:

  1. querySelector() 方法返回文档中匹配指定 CSS 选择器的一个元素。
    注意: querySelector() 方法仅仅返回匹配指定选择器的第一个元素。如果你需要返回所有的元素,请使用 querySelectorAll() 方法替代。
    querySelectorAll() 方法返回文档中匹配指定 CSS 选择器的所有元素,返回 [NodeList] 对象。
    2.[document.getElementsByClassName()]: 返回文档中所有指定类名的元素集合,作为 NodeList 对象。
    [document.getElementById()]:返回对拥有指定 id 的第一个对象的引用。
    [document.getElementsByName()]:返回带有指定名称的对象集合。
    [document.getElementsByTagName()]:返回带有指定标签名的对象集合。

从文档里其实也没有看出在使用上有什么区别,经过我的实验 在获取dom元素时,获取到的元素经过对比也无差异,令我费解。好在有万能的搜索引擎,告诉了我答案
query选择符选出来的元素及元素数组是静态的,而getElement这种方法选出的元素是动态的。
这句话是的难点在于对静态和动态的理解,什么是静态,什么是动态?

<body>
    <div id="test">
        <p v-model="aa">text</p>
        <p>text</p>
    </div>
</body>
<script>
    var querySelector = document.querySelector('#test')
    var getElementById = document.getElementById('test')
    console.log(querySelector === getElementById) // true
    var querySelectorAll = document.querySelectorAll('p')
    for(let i=0;i < querySelectorAll.length;i++){
        querySelector.appendChild(document.createElement('p'))
    }
    console.log(querySelectorAll.length) //值为2,动态添加元素并没有使querySelectorAll发生变化
    var getElementsByTagName = document.getElementsByTagName('p')
    for(let i=0;i < 3;i++){
        getElementById.appendChild(document.createElement('p'))
    }
    console.log(getElementsByTagName.length) //值为4+3=7,每次动态添加元素都使getElementsByTagName发生了变化
</script>

通过代码一目了然的理解所谓的动态和静态是什么含义
记录下来,以加深理解和记忆

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、概述 document节点是整个文档树的顶层节点,每张网页都有自己的document节点。window.doc...
    周花花啊阅读 5,133评论 0 1
  • ps:了解这个知识点的原因 前两天我在重温js dom编程的时候,看到了获取dom元素这一章,然后看到了getEl...
    var_Change阅读 5,166评论 0 3
  • 概述 document节点是文档的根节点,每张网页都有自己的document节点。window.document属...
    许先生__阅读 3,909评论 0 2
  •   尽管 DOM 作为 API 已经非常完善了,但为了实现更过的功能,仍然会有一些标准或专有的扩展。   2008...
    霜天晓阅读 3,211评论 0 0
  • 1 什么是DOM 文档对象模型 (DOM) 是HTML和XML文档的编程接口。它提供了对文档的结构化的表述,并定义...
    YyzclYang阅读 5,805评论 0 0