Maison > interface Web > js tutoriel > Pourquoi choisir « getElementsByClassName » plutôt que « getElementById » en JavaScript ?

Pourquoi choisir « getElementsByClassName » plutôt que « getElementById » en JavaScript ?

Linda Hamilton
Libérer: 2024-11-08 07:01:01
original
377 Les gens l'ont consulté

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

Obtenir des éléments par classe : une alternative à getElementById en JavaScript

Dans le domaine du développement Web, la méthode getElementById règne en maître lorsqu'il s'agit pour accéder à des éléments spécifiques dans un document HTML. Cependant, il existe des cas où l'utilisation de getElementByClass peut s'avérer plus appropriée.

Avec l'émergence de navigateurs modernes comme Firefox et Chrome, getElementByClass est devenu une fonctionnalité prise en charge de manière native. Cependant, pour les navigateurs comme Internet Explorer, une solution de contournement est nécessaire pour émuler sa fonctionnalité.

Création d'une fonction getElementsByClass personnalisée

Dustin Diaz, un expert JavaScript renommé, a conçu une solution ingénieuse pour remédier au manque de support natif de getElementByClass. Son approche consiste à créer une fonction personnalisée qui imite son comportement :

<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>
Copier après la connexion

Intégrer la fonction avec le script Toggle

Pour intégrer de manière transparente cette fonction personnalisée avec la bascule fournie script, remplacez simplement les appels getElementById par getElementsByClassName, comme indiqué ci-dessous :

<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>
Copier après la connexion

Conclusion

En implémentant cette fonction getElementsByClass personnalisée, vous pouvez exploiter l'attribut class pour basculer la visibilité des éléments, même lorsque la prise en charge native de getElementByClass fait défaut. Cette solution permet aux développeurs d'exploiter les avantages de l'identification des éléments basée sur les classes, garantissant ainsi un comportement cohérent sur différents navigateurs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal