Maison  >  Article  >  interface Web  >  Comment sélectionner des éléments par attribut lorsque querySelectorAll est manquant ?

Comment sélectionner des éléments par attribut lorsque querySelectorAll est manquant ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-30 00:32:29111parcourir

How to Select Elements by Attribute When querySelectorAll is Missing?

Comment récupérer des éléments par attribut lorsque querySelectorAll est indisponible

Malgré sa prévalence, la méthode querySelectorAll peut ne pas être universellement accessible. Par exemple, les navigateurs plus anciens comme IE7 ne disposent pas de cette fonctionnalité. Cependant, il est possible d'obtenir des résultats similaires en utilisant une approche native qui garantit la compatibilité avec IE7.

Considérez le scénario suivant :

<p data-foo="bar"></p>

En général, on utiliserait querySelectorAll pour récupérer des éléments basés sur leurs attributs :

document.querySelectorAll('[data-foo]')

Cependant, en l'absence de querySelectorAll, une solution alternative est requise.

Pour atteindre nativement la même fonctionnalité, une fonction JavaScript peut être construite :

function getAllElementsWithAttribute(attribute) {
  var matchingElements = [];
  var allElements = document.getElementsByTagName('*');
  for (var i = 0, n = allElements.length; i < n; i++) {
    if (allElements[i].getAttribute(attribute) !== null) {
      matchingElements.push(allElements[i]);
    }
  }
  return matchingElements;
}

Cette fonction parcourt l'ensemble du document, récupérant tous les éléments avec un attribut spécifique. En l'invoquant :

getAllElementsWithAttribute('data-foo');

on peut récupérer efficacement des éléments avec l'attribut "data-foo". Cette solution est à la fois complète et compatible avec IE7, permettant l'accès aux éléments par attribut même dans les navigateurs dépourvus de querySelectorAll.

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!

Déclaration:
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