如何使用 JavaScript 透過類隱藏 HTML 元素?


在處理動態網頁時,通常需要根據特定條件或使用者互動隱藏某些 HTML 元素。一種常見的方法是為這些元素分配類,然後使用 JavaScript 動態隱藏它們。這提供了一種靈活且有效的方法來控制元素的可見性,而無需修改 HTML 結構。

在本文中,我們將探討如何使用 JavaScript 透過類隱藏 HTML 元素。我們將討論動態隱藏元素的重要性,瞭解 HTML 類的概念,並學習使用 JavaScript 透過類選擇元素的不同方法。然後,我們將深入探討實現細節,提供分步說明和有效的程式碼示例。

透過類選擇元素

一旦我們對 HTML 類有了很好的理解,我們就可以繼續使用 JavaScript 透過類選擇元素。有多種方法可供我們根據其分配的類來定位元素。在本節中,我們將探討兩種常用的方法:getElementsByClassName() 和 querySelectorAll()。

透過類選擇元素的 JavaScript 方法概述

在 JavaScript 中透過類選擇元素時,我們會想到兩種主要方法:getElementsByClassName() 和 querySelectorAll()。這兩種方法都允許我們檢索共享公共類的元素集合。讓我們仔細看看每種方法 -

  • getElementsByClassName() getElementsByClassName() 方法是 JavaScript 的內建方法,用於檢索具有特定類名的元素集合。它以類名作為引數,並返回一個即時的 HTMLCollection 物件。

let elements = document.getElementsByClassName(className);
  • getElementsByClassName() 方法在所有現代瀏覽器中都得到廣泛支援,並提供了一種簡單的方法來透過類選擇元素。但是,它返回一個即時集合,這意味著對 DOM 進行的任何更改都將自動反映在集合中。

  • querySelectorAll() 另一方面,querySelectorAll() 方法提供了一種更靈活的方法來使用 CSS 選擇器選擇元素。它接受 CSS 選擇器作為引數,並返回一個靜態的 NodeList 物件。

let elements = document.querySelectorAll(selector);
  • 使用 querySelectorAll(),您可以使用任何 CSS 選擇器(包括類選擇器)來檢索元素集合。此方法在所有現代瀏覽器中都受支援,並提供更高階的選擇功能。但是,返回的集合是靜態的,這意味著當 DOM 發生更改時,它不會自動更新。

使用 GetElementsByClassName() 方法

getElementsByClassName() 方法使用起來很簡單。它接受一個引數(類名),並返回一個包含具有該類的所有元素的即時 HTMLCollection。這是一個例子 -

<!DOCTYPE html>
<html>
<head>
   <title>Using getElementsByClassName()</title>
</head>
<body>
   <div class="box">Box 1</div>
   <div class="box">Box 2</div>
   <div class="box">Box 3</div>
   
   <script>
      let elements = document.getElementsByClassName('box');
      console.log(elements); // Outputs a live HTMLCollection
   </script>
</body>
</html>

在此示例中,getElementsByClassName() 方法用於選擇所有具有類名“box”的元素。然後可以操作或訪問返回的 HTMLCollection 以進行進一步處理。

使用 QuerySelectorAll() 方法

querySelectorAll() 方法在透過類選擇元素方面提供了更大的靈活性,因為它允許使用 CSS 選擇器。此方法返回一個靜態的 NodeList,其中包含與指定選擇器匹配的所有元素。這是一個例子 -

<!DOCTYPE html>
<html>
<head>
   <title>Using querySelectorAll()</title>
</head>
<body>
   <div class="box">Box 1</div>
   <div class="box">Box 2</div>
   <div class="box">Box 3</div>
   
   <script>
      let elements = document.querySelectorAll('.box');
      console.log(elements); // Outputs a static NodeList
   </script>
</body>
</html>

在此示例中,querySelectorAll() 方法與 CSS 類選擇器“.box”一起使用,以選擇所有具有類名“box”的元素。可以使用類似陣列的索引迭代或訪問返回的 NodeList。

每種方法的優缺點

getElementsByClassName() 和 querySelectorAll() 都有其優勢和注意事項。在兩者之間進行選擇時,請記住以下幾點 -

  • getElementsByClassName() 得到很好的支援,並返回一個即時 HTMLCollection,允許在 DOM 發生更改時自動更新。但是,它缺乏 CSS 選擇器的靈活性。

  • querySelectorAll() 提供了更高階的選擇功能,並使用 CSS 選擇器返回靜態 NodeList。它提供了更大的靈活性,但不會在 DOM 發生更改時自動更新。

透過類隱藏元素

我們可以採取不同的方法來實現這一點,具體取決於我們所需的控制級別和相容性。

使用 CSS 透過類隱藏元素

透過類隱藏元素的一種簡單有效的方法是利用 CSS display 屬性。display 屬性允許我們控制網頁上元素的可見性。以下是如何使用 CSS 透過類隱藏元素 -

  • CSS display 屬性簡介

    CSS display 屬性指定元素的渲染行為。透過將其設定為 none,我們可以有效地隱藏元素。例如 -

let elements = .hidden {
   display: none;
}
  • 應用“display: none”隱藏元素

    要使用定義的 CSS 類隱藏元素,只需將該類應用於所需的元素即可。例如 -

<div class="box hidden">This element is hidden.

具有類“box”和“hidden”的元素將在網頁上隱藏。

  • 設定用於隱藏元素的 CSS 類

    為了使隱藏過程更模組化和可重用,最好定義專門用於隱藏元素的 CSS 類。例如 -

.hidden {
   display: none;
}

.invisible {
   visibility: hidden;
}

透過為不同的隱藏行為設定單獨的類,我們可以根據我們的需求輕鬆地將所需的可見性樣式應用於元素。

使用 JavaScript 動態應用 CSS 類

雖然使用 CSS 類隱藏元素是一種簡單的方法,但我們可以透過使用 JavaScript 動態操作這些類來增強互動性和控制。

  • 新增 CSS 類以隱藏元素

    要使用 JavaScript 動態隱藏元素,我們可以將與隱藏關聯的 CSS 類新增到所需的元素。這是一個例子 -

let element = document.getElementById("myElement");
element.classList.add("hidden");

在此示例中,隱藏類已新增到 ID 為“myElement”的元素,從而有效地隱藏了它。

  • 刪除 CSS 類以顯示元素

    要再次顯示隱藏的元素,我們可以使用 JavaScript 從元素中刪除 CSS 類。這是一個例子 -

let element = document.getElementById("myElement");
element.classList.remove("hidden");

此程式碼從 ID 為“myElement”的元素中刪除隱藏類,使其再次可見。

  • 使用 JavaScript 操作類名

    JavaScript 提供了多種方法來操作元素上的類名。例如 -

    • classList.add("className") - 新增一個類到元素的類列表中。

    • classList.remove("className") - 從元素的類列表中刪除一個類。

    • classList.toggle("className") - 切換元素的類列表中是否存在一個類。

    • classList.contains("className") - 檢查元素是否具有特定類。

透過利用這些方法,我們可以動態新增或刪除所需的 CSS 類,以實現元素的隱藏或顯示效果。

示例:使用 CSS 和 JavaScript 透過類隱藏元素

讓我們將所有內容整合在一起,並演示一個使用 CSS 和 JavaScript 透過類隱藏元素的示例。

<!DOCTYPE html>
<html>
<head>
   <title>Hiding Elements by Class</title>
   <style>
      .hidden {
      display: none;
      }
   </style>
</head>
<body>
   <div class="box">Visible Element</div>
   <div class="box hidden">Hidden Element</div>
   
   <button onclick="hideElements()">Hide Elements</button>
   <button onclick="showElements()">Show Elements</button>
   
   <script>
      function hideElements() {
         let elements = document.getElementsByClassName("box");
         for (let i = 0; i < elements.length; i++) {
         elements[i].classList.add("hidden");
         }
      }
   
      function showElements() {
         let elements = document.getElementsByClassName("box");
         for (let i = 0; i < elements.length; i++) {
            elements[i].classList.remove("hidden");
         }
      }
   </script>
</body>
</html>

在此示例中,我們有兩個 <div> 元素,類名為“box”。一個元素最初是可見的,而另一個元素使用 CSS 類“hidden”隱藏。這兩個按鈕觸發 JavaScript 函式,這些函式動態新增或刪除“hidden”類,以相應地顯示或隱藏元素。

相容性和效能注意事項

使用 CSS 和 JavaScript 透過類隱藏元素時,務必考慮瀏覽器相容性和效能影響。

  • CSS 和 JavaScript 方法的瀏覽器相容性

    確保用於隱藏元素的 CSS 屬性和 JavaScript 方法在不同的瀏覽器中都受支援。建議檢查瀏覽器相容性表,如果需要,使用適當的 polyfill 或回退。

  • 使用不同方法的效能影響

    動態操作元素的可見性可能會影響效能,尤其是在處理大量元素時。務必最佳化程式碼並考慮替代方法,例如隱藏容器元素而不是單個元素(如果可能)。

  • 最佳化大量元素的隱藏過程

    在處理大量元素時,請考慮使用更有效的 DOM 遍歷方法(如 querySelectorAll()),並快取選定的元素以避免冗餘的 DOM 查詢。此外,批次操作或利用虛擬渲染技術可以幫助提高處理大量列表或表格時的效能。

結論

在處理大量元素時,請考慮使用更有效的 DOM 遍歷方法(如 querySelectorAll()),並快取選定的元素以避免冗餘的 DOM 查詢。此外,批次操作或利用虛擬渲染技術可以幫助提高處理大量列表或表格時的效能。

更新於:2023 年 8 月 7 日

7K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.