gpt4 book ai didi

javascript - querySelectorAll 和 getElementsByTagName 有什么区别?

转载 作者:可可西里 更新时间:2023-11-01 01:27:03 26 4
gpt4 key购买 nike

我想知道在 JavaScript 中选择元素的两种不同语法。

假设如果我想从当前文档中选择所有 div,那么:

var divs = document.getElementsByTagName("div");
console.log("There are "+divs.length+" Divs in Document !");

将正常工作。但还有另一种方法,例如:

var divs = document.querySelectorAll("div");
console.log("There are "+divs.length+" Divs in Document !");

当它们都以相同的方式工作时。它们之间有什么区别?

  • 哪个更快?
  • 为什么?
  • 两者如何运作?
  • 提前致谢。我看到过这样的问题,但他们没有满足需求。

    最佳答案

    大多数回答都是错误的。 Nicolae Olariu 是唯一一个回答正确的人

    Which one is faster? Why?

    不是问题。真正的问题是“它是如何工作的?”

    主要区别在于此示例:

    <!doctype html> 
    <html>
    <head>
    <meta charset="utf-8">
    <title>Yandex</title>

    </head>
    <body>
    <a href="((http://yandex.ru))">Яндекс</a>,
    <a href="((http://yandex.com))">Yandex</a>
    </body>
    <script>

    var elems1 = document.getElementsByTagName('a'), // return 2 lements, elems1.length = 2
    elems2 = document.querySelectorAll("a"); // return 2 elements, elems2.length = 2

    document.body.appendChild(document.createElement("a"));

    console.log(elems1.length, elems2.length); // now elems1.length = 3!
    // while elems2.length = 2
    </script>
    </html>

    因为 querySelectorAll 返回一个静态(非实时)元素列表。

    关于javascript - querySelectorAll 和 getElementsByTagName 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18247289/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com