definitions from the DOM Standard似乎几乎完全一样,我不明白其中的区别。queryAllquerySelectorAll有什么区别?
下面是DOM标准的评估逻辑,但我不够聪明,无法理解它。
queryqueryAll

querySelectorquerySelectorAll

最佳答案

query()queryAll()接受相对的选择器字符串,而querySelector()querySelectorAll()不接受。相对选择器基本上是一个选择器,可以是部分选择器,并以组合器开头:

var parentNode = document.getElementById('parentNode'); // document.querySelector('#parentNode');

// Find .childNode elements that are direct descendants (children) of parentNode
// This cannot be done with querySelectorAll() using the existing reference to parentNode
parentNode.queryAll('> .childNode');
// querySelectorAll does allow getting all descendants of parentNode though
parentNode.querySelectorAll('.childNode');

但更重要的是,queryAll()返回一个实时的Elements[]数组,而NodeList返回的querySelectorAll()是静态的,这意味着列表中的节点在更改其各自的DOM元素时不会更新。

就其功能而言,query()queryAll()可能与Selectors API level 2中定义的find()findAll()更为相似-您还将在其中找到相对选择器的定义-因为两个方法组都接受并使用相对选择器。请注意,findAll()还会返回静态NodeList,因此它们仍然不完全相同。

07-24 18:07