querySelector 和 getElementById 之间的区别

在编写js代码的过程中,我们需要获取dom元素,而获取dom元素有许多种办法,例如:querySelector 和 getElementById、 getElementByClassname、getElementByTagname,那这类办法有什么区别呢?

在文档中的描述:

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

    [document.getElementById()]:返回对拥有指定 id 的第一个对象的引用。
    [document.getElementsByName()]:返回带有指定名称的对象集合。
    [document.getElementsByTagName()]:返回带有指定标签名的对象集合

在文档的描述中,这两种方法在使用上的区别好像看不出来,而且自己敲代码的时候获得的元素也没有什么不一样的。但是实际上是有差别的,差别在于:query选择符选择出来的元素以及元素数组是静态的,而getElement这种方法选择出来的元素及元素数组是动态的。那到底什么是静态?什么是动态呢?

大家可以自己去敲一下下面这段代码:

<body>
    <div id="difference">
        <p v-model="aa">你来试试就知道了</p>
        <p>你来试试就知道了</p>
    </div>

    <script>
        var querySelector = document.querySelector('#difference')
        var getElementById = document.getElementById('difference')
        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>
</body>

理解完这段代码之后

大家应该就可以明白:什么是静态、什么是动态、以及querySelector 和 getElementById 之间的区别了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值