首页  >  文章  >  web前端  >  当不支持 getElementByClass 时,如何在 JavaScript 中按类检索元素?

当不支持 getElementByClass 时,如何在 JavaScript 中按类检索元素?

Barbara Streisand
Barbara Streisand原创
2024-11-07 03:07:02181浏览

How do you retrieve elements by class in JavaScript when getElementByClass is not supported?

在 JavaScript 中按类获取元素

在 JavaScript 中, getElementById 方法通常用于通过唯一标识符检索元素。但是,某些场景需要根据类名检索元素,并且由于 JavaScript 本身不支持 getElementByClass,因此需要替代方法。

Dustin Diaz 方法:

按类检索元素的一种方法是 Dustin Diaz 创建的函数:

<code class="javascript">function getElementByClass(searchClass, node) {
  if (node == null) {
    node = document;
  }

  var classElements = [];
  var els = node.getElementsByTagName("*");
  var elsLen = els.length;
  var pattern = new RegExp("(^|\s)" + searchClass + "(\s|$)", "i");
  var i;
  var j = 0;

  for (i = 0; i < elsLen; i++) {
    if (pattern.test(els[i].className)) {
      classElements[j] = els[i];
      j++;
    }
  }

  return classElements;
}</code>

用法:

此函数可以与切换脚本结合使用问题中提供:

<code class="javascript">function toggle_visibility(className) {
  var elements = getElementByClass(className, document);
  var 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>

本机方法:

在 Firefox、Chrome、IE 和 Opera 等主要浏览器的最新版本中,支持 getElementsByClassName 方法原生地。这简化了按类检索元素的过程:

<code class="javascript">function getElementsByClassName(className, node) {
  if (node.getElementsByClassName) {
    return node.getElementsByClassName(className);
  } else {
    // Use Dustin Diaz method as fallback
    return getElementByClass(className, node);
  }
}</code>

以上是当不支持 getElementByClass 时,如何在 JavaScript 中按类检索元素?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn