Pouvez-vous me dire s'il existe une API DOM qui recherche un élément avec un nom d'attribut et une valeur d'attribut donnés:
Quelque chose comme:
doc.findElementByAttribute("myAttribute", "aValue");
javascript
dom
Michael
la source
la source
Réponses:
Mise à jour: Au cours des dernières années, le paysage a radicalement changé. Vous pouvez désormais utiliser de manière fiable
querySelector
etquerySelectorAll
, voir la réponse de Wojtek pour savoir comment procéder.Il n'y a plus besoin d'une dépendance jQuery maintenant. Si vous utilisez jQuery, tant mieux ... sinon, vous n'avez plus besoin de vous y fier uniquement pour sélectionner des éléments par attributs.
Il n'y a pas de moyen très court de le faire en javascript vanille, mais il existe des solutions disponibles.
Vous faites quelque chose comme ça, en parcourant les éléments et en vérifiant l'attribut
Si une bibliothèque comme jQuery est une option, vous pouvez le faire un peu plus facilement, comme ceci:
Si la valeur n'est pas un identifiant CSS valide (elle contient des espaces ou de la ponctuation, etc.), vous avez besoin de guillemets autour de la valeur (ils peuvent être simples ou doubles):
Vous pouvez également faire
start-with
,ends-with
,contains
, etc ... il y a plusieurs options pour le sélecteur d'attribut .la source
Les navigateurs modernes prennent en charge natif
querySelectorAll
afin que vous puissiez faire:https://developer.mozilla.org/en-US/docs/Web/API/Document.querySelectorAll
Détails sur la compatibilité du navigateur:
Vous pouvez utiliser jQuery pour prendre en charge les navigateurs obsolètes (IE9 et versions antérieures):
la source
SyntaxError: An invalid or illegal string was specified
'[data-foo="value"]'
Nous pouvons utiliser le sélecteur d'attributs dans DOM en utilisant les méthodes
document.querySelector()
etdocument.querySelectorAll()
.pour le vôtre:
et en utilisant
querySlectorAll()
:Dans
querySelector()
et lesquerySelectorAll()
méthodes, nous pouvons sélectionner des objets comme nous le sélectionnons dans "CSS".En savoir plus sur les sélecteurs d'attributs "CSS" dans https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors
la source
ps si vous connaissez le type d'élément exact, vous ajoutez le 3ème paramètre (ie
div, a, p ...etc...
):mais au début, définissez cette fonction:
ps mis à jour par les recommandations des commentaires.
la source
document.querySelectorAll('[data-foo="value"]');
tel que proposé par @Wojtek Kruszewski sur awnser accepté.Voici un exemple, Comment rechercher des images dans un document par attribut src:
la source
vous pouvez utiliser getAttribute:
https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttribute
la source
p
élément sans utiliserid
ou toutp
sur le DOM (et tester les attributs)Utilisez des sélecteurs de requête, des exemples:
input[name]
Entrer des éléments avec unename
propriété.[id|=view]
Éléments dont l'id commence parview-
.[class~=button]
Éléments avec labutton
classe.la source