欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript中querySelectorAll的基本用法及詳細解析

 更新時間:2025年04月03日 10:28:13   作者:碼力無邊-OEC  
querySelectorAll是一個用于獲取文檔中所有匹配指定選擇器的元素的方法,這篇文章主要介紹了JavaScript中querySelectorAll的基本用法及詳細解析,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

前言

querySelectorAll 是 JavaScript 中用于查找符合指定 CSS 選擇器的所有 DOM 元素的一個方法。與 querySelector 不同,querySelectorAll 返回的是一個靜態(tài)的 NodeList,包含文檔中匹配選擇器的所有元素。

基本用法

let elements = document.querySelectorAll(selector);
  • selector: 這是一個 CSS 樣式規(guī)則的字符串,用于指定選擇器。
  • elements: 返回一個包含所有匹配元素的 NodeList(類數組對象)。如果沒有匹配項,返回的 NodeList 是空的。

詳細解析

1. 支持的選擇器

querySelectorAll 支持的選擇器與 querySelector 完全相同。它們的語法和功能與 CSS 選擇器保持一致。常見的選擇器有:

  • ID選擇器#id

    let elements = document.querySelectorAll('#myId');
    

    通常不需要使用 ID 選擇器,因為 ID 是唯一的,但技術上仍然可以使用。

  • 類選擇器.class

    let elements = document.querySelectorAll('.myClass');
    

    返回所有 class 為 myClass 的元素。

  • 標簽選擇器tag

    let elements = document.querySelectorAll('div');
    

    返回所有的 <div> 元素。

  • 屬性選擇器[attribute=value]

    let elements = document.querySelectorAll('input[type="text"]');
    

    返回所有 type 屬性為 "text" 的 input 元素。

  • 后代選擇器ancestor descendant

    let elements = document.querySelectorAll('#container .item');
    

    返回 id 為 container 的元素內部的所有 class="item" 的元素。

  • 偽類選擇器:pseudo-class

    let elements = document.querySelectorAll('li:nth-child(odd)');
    

    返回所有滿足 nth-child(odd) 規(guī)則的 li 元素(即奇數位置的元素)。

2. 返回一個靜態(tài) NodeList

querySelectorAll 返回的是一個 NodeList,這是一個類數組對象,類似于 HTMLCollection。它和真正的數組的區(qū)別主要體現在:

  • 靜態(tài)NodeList 是靜態(tài)的,意味著即使 DOM 發(fā)生變化,NodeList 內部的元素不會更新。它是在調用 querySelectorAll 時的那一刻被捕獲的元素。

  • 類數組: 雖然 NodeList 看起來像數組,但它不是一個真正的數組。它沒有數組的一些內建方法,比如 push() 和 pop()。不過你可以通過 forEach 方法或通過 Array.from() 將其轉為真正的數組。

  • 遍歷: 可以通過 for...of 循環(huán)、forEach、或者基于索引的傳統(tǒng) for 循環(huán)來遍歷 NodeList。

    let elements = document.querySelectorAll('.myClass');
    
    // 通過 forEach 遍歷
    elements.forEach(function(element) {
      console.log(element);
    });
    
    // 通過傳統(tǒng)的 for 循環(huán)遍歷
    for (let i = 0; i < elements.length; i++) {
      console.log(elements[i]);
    }
    
    // 使用 for...of 遍歷
    for (let element of elements) {
      console.log(element);
    }
    

3. 沒有找到匹配的元素

如果 querySelectorAll 沒有找到任何匹配的元素,它返回一個空的 NodeList,而不是 null。因此不需要像 querySelector 那樣檢查是否返回 null

let elements = document.querySelectorAll('.nonExistentClass');
console.log(elements.length); // 0,表示沒有找到匹配項

4. 作用域

querySelectorAll 可以在全局范圍 (document) 或者在特定元素的作用域中使用。

let container = document.querySelector('#container');
let items = container.querySelectorAll('.item');

這將在 container 元素的范圍內,查找所有具有 .item 類的元素。

5. 偽類與組合選擇器

你可以通過組合選擇器和偽類選擇器來創(chuàng)建非常強大的查詢:

let elements = document.querySelectorAll('div > p:first-child');

這將返回所有 div 元素下的第一個子元素是 p 的元素。

6. 性能考慮

因為 querySelectorAll 返回所有匹配的元素,如果選擇器非常復雜或者頁面包含大量匹配元素,可能會對性能產生影響。在需要查找大量元素時,性能開銷可能較大。對于常見的操作,通常性能差異可以忽略不計,但在大量操作中,簡化選擇器可以提高效率。

7. 與其他方法的比較

  • getElementsByClassName 和 getElementsByTagName

    • 這些方法返回的也是類數組的 HTMLCollection,但它們是實時的,意味著如果 DOM 發(fā)生變化,HTMLCollection 會實時更新,而 NodeList 不會。
  • querySelector

    • querySelector 只返回第一個匹配的元素,而 querySelectorAll 返回所有匹配的元素。

小結

  • querySelectorAll 是一個功能強大的方法,它允許你通過 CSS 選擇器來查找文檔中所有匹配的 DOM 元素。
  • 它返回一個靜態(tài)的 NodeList,不會隨著 DOM 的變化而自動更新。
  • 它支持所有常見的 CSS 選擇器,并且可以使用組合和偽類選擇器來進行復雜查詢。
  • 性能方面在大量查找或復雜選擇器時需要謹慎使用。

querySelectorAll 提供了靈活的方式來操作和遍歷多個 DOM 元素,是現代 JavaScript 操作 DOM 的核心工具之一。

到此這篇關于JavaScript中querySelectorAll的基本用法及詳細解析的文章就介紹到這了,更多相關JS中querySelectorAll詳解內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 微信小程序實現全局狀態(tài)管理的方法整理

    微信小程序實現全局狀態(tài)管理的方法整理

    已知微信小程序中如果要做到全局狀態(tài)共享,常用的有四種方式,分別是globalData、本地緩存、mobx-miniprogram和westore,本文將帶大家看看mobx-miniprogram是如何實現的小程序的全局狀態(tài)管理,需要的可以收藏一下
    2023-06-06
  • bootstrap table單元格新增行并編輯

    bootstrap table單元格新增行并編輯

    這篇文章主要為大家詳細介紹了bootstrap table單元格新增行并編輯的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • 小程序接口的promise化的實現方法

    小程序接口的promise化的實現方法

    這篇文章主要介紹了小程序接口的promise化的實現方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • 純js封裝的ajax功能函數與用法示例

    純js封裝的ajax功能函數與用法示例

    這篇文章主要介紹了純js封裝的ajax功能函數與用法,結合實例形式分析了基于JavaScript封裝的ajax功能函數定義及與php后臺交互相關操作技巧,需要的朋友可以參考下
    2018-05-05
  • JavaScript 報表展示實現代碼

    JavaScript 報表展示實現代碼

    以下是從網上找到的一段JavaScript實現圖形報表的代碼,對于想客戶端顯示報表的朋友可以參考下。
    2009-12-12
  • 在JavaScript中構建ArrayList示例代碼

    在JavaScript中構建ArrayList示例代碼

    這篇文章主要介紹了在JavaScript中構建ArrayList,很實用,需要的朋友可以參考下
    2014-09-09
  • 微信小程序實現動態(tài)驗證碼

    微信小程序實現動態(tài)驗證碼

    這篇文章主要為大家詳細介紹了微信小程序實現動態(tài)驗證碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • js如何判斷用戶是否是用微信瀏覽器

    js如何判斷用戶是否是用微信瀏覽器

    微信內置瀏覽器屏蔽了下載鏈接,如果用戶是用微信內置瀏覽器打開的,則提示用戶換一個瀏覽器打開頁面,那么該如何判斷用戶是否是用微信瀏覽器呢
    2014-06-06
  • uniapp手寫滾動選擇器的完整代碼(時間選擇器)

    uniapp手寫滾動選擇器的完整代碼(時間選擇器)

    這篇文章主要介紹了uniapp手寫滾動選擇器的完整代碼(時間選擇器),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-07-07
  • JS監(jiān)聽瀏覽器關閉、刷新及切換標簽頁觸發(fā)事件代碼示例

    JS監(jiān)聽瀏覽器關閉、刷新及切換標簽頁觸發(fā)事件代碼示例

    瀏覽器是客戶端,客戶端的操作服務器是監(jiān)聽不到的,所以可以用js來監(jiān)聽,js代碼監(jiān)聽瀏覽器關閉或者刷新,這篇文章主要給大家介紹了關于JS監(jiān)聽瀏覽器關閉、刷新及切換標簽頁觸發(fā)事件的相關資料,需要的朋友可以參考下
    2023-11-11

最新評論