如何使用另一个 querySelectorAll 的值简化 querySelectorAll 参数
How to simplify querySelectorAll parameter using value of another querySelectorAll
我有以下内容:
var searchSuggestionsItems = document.querySelectorAll("#search-user-results .live-search-results--list li");
并希望将此 select 或用于 select 所有具有 .overedSuggestion
class 的 a
元素。我知道以下应该有效:
var selectedSuggestion = document.querySelectorAll("#search-user-results .live-search-results--list li a.overedSuggestion");
但我正在寻找一种简化的方法。我尝试了什么:
selectedSuggestion = document.querySelectorAll(searchSuggestionsItems+' a.overedSuggestion');
此returns以下错误:
Uncaught DOMException: Failed to execute 'querySelectorAll' on 'Document': '[object NodeList] a.overedSuggestion' is not a valid selector.
那是因为您要将 NodeList
集合与字符串连接起来。 NodeList
被转换为 [object NodeList]
字符串,它不是 valid/meaningful 选择器。
DOM 元素也有 .querySelectorAll
方法,所以你可以编码:
searchSuggestionsItems[0].querySelectorAll('a.overedSuggestion');
上面的代码片段 returns a.overedSuggestion
节点列表中第一个元素的后代。要获取列表中所有元素的后代,您需要遍历列表,这效率不高。使用更长的选择器效率更高。
如果 searchSuggestionsItems
是一个选择器,您的代码将有效,即:
var searchSuggestionsItems = "#search-user-results .live-search-results--list li";
我有以下内容:
var searchSuggestionsItems = document.querySelectorAll("#search-user-results .live-search-results--list li");
并希望将此 select 或用于 select 所有具有 .overedSuggestion
class 的 a
元素。我知道以下应该有效:
var selectedSuggestion = document.querySelectorAll("#search-user-results .live-search-results--list li a.overedSuggestion");
但我正在寻找一种简化的方法。我尝试了什么:
selectedSuggestion = document.querySelectorAll(searchSuggestionsItems+' a.overedSuggestion');
此returns以下错误:
Uncaught DOMException: Failed to execute 'querySelectorAll' on 'Document': '[object NodeList] a.overedSuggestion' is not a valid selector.
那是因为您要将 NodeList
集合与字符串连接起来。 NodeList
被转换为 [object NodeList]
字符串,它不是 valid/meaningful 选择器。
DOM 元素也有 .querySelectorAll
方法,所以你可以编码:
searchSuggestionsItems[0].querySelectorAll('a.overedSuggestion');
上面的代码片段 returns a.overedSuggestion
节点列表中第一个元素的后代。要获取列表中所有元素的后代,您需要遍历列表,这效率不高。使用更长的选择器效率更高。
如果 searchSuggestionsItems
是一个选择器,您的代码将有效,即:
var searchSuggestionsItems = "#search-user-results .live-search-results--list li";