首頁  >  文章  >  web前端  >  如何在沒有 getElementById 的情況下使用 JavaScript 按類別取得元素?

如何在沒有 getElementById 的情況下使用 JavaScript 按類別取得元素?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-08 21:34:02307瀏覽

How to Get Elements by Class with JavaScript Without getElementById?

使用JavaScript 依類別取得元素,而無需使用getElementById

在JavaScript 中,getElementById 方法通常用於透過元素的唯一ID 擷取元素。然而,當使用動態產生的元素或共用相同 ID 的元素時,有必要透過元素的類別屬性來尋找元素。雖然現代瀏覽器原生支援 getElementByClass,但並非所有主流瀏覽器(例如​​ Internet Explorer)都支援它。

使用函數依類別取得元素

JavaScript 不提供以類別擷取元素的內建方法。但是,我們可以透過使用函數根據類別屬性搜尋元素來克服此限制。一種流行的實作是 Dustin Diaz 方法:

<code class="javascript">function getElementsByClassName(node, classname) {
  if (node.getElementsByClassName) { // native implementation available
    return node.getElementsByClassName(classname);
  } else {
    var classElements = [],
        els = node.getElementsByTagName("*"),
        elsLen = els.length,
        pattern = new RegExp("(^|\s)"+classname+"(\s|$)", "i");

    for (var i = 0, j = 0; i < elsLen; i++) {
      if ( pattern.test(els[i].className) ) {
          classElements[j] = els[i];
          j++;
      }
    }
    return classElements;
  }
}</code>

此函數採用節點(通常是文件物件)和類別名稱作為輸入,並傳回與指定類別相符的元素陣列。它首先檢查本機 getElementsByClassName 方法是否存在,如果存在,則使用它。否則,它會迭代節點中的所有元素,並檢查它們的類別屬性是否包含指定的類別名稱。

與Toggle 腳本整合

一旦我們有了一個函數要按類別獲取元素,我們可以修改切換可見性腳本來使用它:

<code class="javascript">function toggle_visibility(className) {
  var elements = getElementsByClassName(document, className),
      n = elements.length;
  for (var i = 0; i < n; i++) {
    var e = elements[i];
    if(e.style.display == 'block') {
      e.style.display = 'none';
    } else {
      e.style.display = 'block';
    }
  }
}</code>

透過用getElementsByClassName 函數取代getElementById 函數調用,我們的腳本現在可以根據元素的類別切換元素的可見性屬性。這使我們能夠控制動態產生的元素的可見性,而無需依賴唯一的 ID。

以上是如何在沒有 getElementById 的情況下使用 JavaScript 按類別取得元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn