Heim  >  Artikel  >  Web-Frontend  >  Warum sollte man in JavaScript „getElementsByClassName“ anstelle von „getElementById“ wählen?

Warum sollte man in JavaScript „getElementsByClassName“ anstelle von „getElementById“ wählen?

Linda Hamilton
Linda HamiltonOriginal
2024-11-08 07:01:01301Durchsuche

Why Choose `getElementsByClassName` over `getElementById` in JavaScript?

Elemente nach Klasse abrufen: Eine Alternative zu getElementById in JavaScript

Im Bereich der Webentwicklung ist die getElementById-Methode führend, wenn es darum geht um auf bestimmte Elemente innerhalb eines HTML-Dokuments zuzugreifen. Es gibt jedoch Fälle, in denen sich die Nutzung von getElementByClass als geeigneter erweisen kann.

Mit dem Aufkommen moderner Browser wie Firefox und Chrome hat sich getElementByClass zu einer nativ unterstützten Funktion entwickelt. Für Browser wie Internet Explorer ist jedoch eine Problemumgehung erforderlich, um deren Funktionalität zu emulieren.

Erstellen einer benutzerdefinierten getElementsByClass-Funktion

Dustin Diaz, ein renommierter JavaScript-Experte, hat sie entwickelt Eine geniale Lösung, um den Mangel an nativer getElementByClass-Unterstützung zu beheben. Sein Ansatz besteht darin, eine benutzerdefinierte Funktion zu erstellen, die ihr Verhalten nachahmt:

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

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

Integration der Funktion mit dem Toggle-Skript

Um diese benutzerdefinierte Funktion nahtlos mit dem bereitgestellten Toggle zu integrieren Skript ersetzen Sie einfach die getElementById-Aufrufe durch getElementsByClassName, wie gezeigt unten:

<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>

Fazit

Durch die Implementierung dieser benutzerdefinierten getElementsByClass-Funktion können Sie das Klassenattribut nutzen, um die Sichtbarkeit von Elementen umzuschalten, selbst wenn getElementByClass nativ unterstützt wird fehlt. Mit dieser Lösung können Entwickler die Vorteile der klassenbasierten Elementidentifizierung nutzen und so ein konsistentes Verhalten über verschiedene Browser hinweg sicherstellen.

Das obige ist der detaillierte Inhalt vonWarum sollte man in JavaScript „getElementsByClassName“ anstelle von „getElementById“ wählen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn