Czy możesz mi powiedzieć, czy istnieje interfejs API DOM, który szuka elementu o podanej nazwie atrybutu i wartości atrybutu:
Coś jak:
doc.findElementByAttribute("myAttribute", "aValue");
javascript
dom
Michael
źródło
źródło
Odpowiedzi:
Aktualizacja: W ciągu ostatnich kilku lat krajobraz zmienił się drastycznie. Możesz teraz niezawodnie korzystać
querySelector
iquerySelectorAll
zobacz odpowiedź Wojtka, jak to zrobić.Nie ma teraz potrzeby korzystania z zależności jQuery. Jeśli używasz jQuery, świetnie ... jeśli nie, nie musisz już polegać na samym wybieraniu elementów według atrybutów.
Nie jest to bardzo krótki sposób na zrobienie tego w waniliowym javascript, ale jest kilka dostępnych rozwiązań.
Robisz coś takiego, przeglądając elementy i sprawdzając atrybut
Jeśli biblioteka taka jak jQuery jest opcją, możesz to zrobić trochę łatwiej, na przykład:
Jeśli wartość nie jest prawidłowym identyfikatorem CSS (zawiera spacje lub znaki interpunkcyjne itp.), Musisz wstawić cudzysłowy wokół wartości (mogą być pojedyncze lub podwójne):
Można również zrobić
start-with
,ends-with
,contains
, itd ... istnieje kilka opcji dla selektora atrybutu .źródło
Nowoczesne przeglądarki obsługują natywne,
querySelectorAll
dzięki czemu możesz:https://developer.mozilla.org/en-US/docs/Web/API/Document.querySelectorAll
Szczegóły dotyczące zgodności przeglądarki:
Możesz użyć jQuery do obsługi przestarzałych przeglądarek (IE9 i starszych):
źródło
SyntaxError: An invalid or illegal string was specified
'[data-foo="value"]'
Możemy użyć selektora atrybutów w DOM przy użyciu
document.querySelector()
idocument.querySelectorAll()
metod.dla twoich:
i za pomocą
querySlectorAll()
:W
querySelector()
iquerySelectorAll()
metodach możemy wybierać obiekty tak, jak wybieramy w „CSS”.Więcej informacji o selektorach atrybutów „CSS” w https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors
źródło
ps, jeśli znasz dokładny typ elementu, dodajesz trzeci parametr (tj.
div, a, p ...etc...
):ale najpierw zdefiniuj tę funkcję:
ps zaktualizowane według rekomendacji komentarzy.
źródło
document.querySelectorAll('[data-foo="value"]');
zgodnie z propozycją @Wojtek Kruszewski na temat zaakceptowanej awnsera.Oto przykład, jak wyszukiwać obrazy w dokumencie według atrybutu src:
źródło
możesz użyć getAttribute:
https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttribute
źródło
p
element bez użyciaid
lub wszystkichp
w DOM (i atrybutów testowych)Użyj selektorów zapytań, przykłady:
input[name]
Wprowadza elementy za pomocąname
właściwością.[id|=view]
Elementy o identyfikatorze zaczynające się odview-
.[class~=button]
Elementy zbutton
klasą.źródło