¿Puede decirme si hay alguna API DOM que busque un elemento con un nombre de atributo y un valor de atributo dados:
Algo como:
doc.findElementByAttribute("myAttribute", "aValue");
javascript
dom
Miguel
fuente
fuente
Respuestas:
Actualización: en los últimos años, el panorama ha cambiado drásticamente. Ahora puede usar de manera confiable
querySelector
yquerySelectorAll
, vea la respuesta de Wojtek sobre cómo hacerlo.No hay necesidad de una dependencia jQuery ahora. Si está utilizando jQuery, genial ... si no lo está, no necesita confiar en él solo para seleccionar elementos por atributos.
No hay una manera muy corta de hacer esto en JavaScript vainilla, pero hay algunas soluciones disponibles.
Hace algo como esto, recorre elementos y verifica el atributo
Si una biblioteca como jQuery es una opción, puede hacerlo un poco más fácil, así:
Si el valor no es un identificador CSS válido (tiene espacios o signos de puntuación, etc.), necesita comillas alrededor del valor (pueden ser simples o dobles):
También se puede hacer
start-with
,ends-with
,contains
, etc ... hay varias opciones para el selector de atributos .fuente
Los navegadores modernos admiten nativos
querySelectorAll
para que pueda hacer:https://developer.mozilla.org/en-US/docs/Web/API/Document.querySelectorAll
Detalles sobre la compatibilidad del navegador:
Puede usar jQuery para admitir navegadores obsoletos (IE9 y anteriores):
fuente
SyntaxError: An invalid or illegal string was specified
'[data-foo="value"]'
Podemos usar el selector de atributos en DOM usando los métodos
document.querySelector()
ydocument.querySelectorAll()
.para ti:
y usando
querySlectorAll()
:En
querySelector()
yquerySelectorAll()
métodos podemos seleccionar objetos como seleccionamos en "CSS".Más información sobre los selectores de atributos "CSS" en https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors
fuente
ps si conoce el tipo de elemento exacto, agrega el tercer parámetro (es decir
div, a, p ...etc...
):pero al principio, defina esta función:
ps actualizado por comentarios recomendaciones.
fuente
document.querySelectorAll('[data-foo="value"]');
según lo propuesto por @Wojtek Kruszewski en el awnser aceptado.Aquí hay un ejemplo, Cómo buscar imágenes en un documento por atributo src:
fuente
podrías usar getAttribute:
https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttribute
fuente
p
elemento sin usarid
o todosp
en el DOM (y los atributos de prueba)Utilice selectores de consulta, ejemplos:
input[name]
Elementos de entrada conname
propiedad.[id|=view]
Elementos con identificación que comienzan conview-
.[class~=button]
Elementos con labutton
clase.fuente