¿Hay alguna manera de hacer coincidir el nombre de un elemento comodín con querySelector
o querySelectorAll
? Veo soporte para comodines en las consultas de atributos, pero no para los elementos en sí.
El documento XML que intento analizar es básicamente una lista plana de propiedades y necesito encontrar elementos que tengan ciertas cadenas en sus nombres.
Me doy cuenta de que el documento XML probablemente necesite una reestructuración si lo necesito, pero eso simplemente no va a suceder.
Cualquier solución, excepto volver a usar el XPath aparentemente obsoleto (IE9 lo dejó caer) es aceptable.
javascript
dom
domparser
selectors-api
Erik Andersson
fuente
fuente
Respuestas:
[id^='someId']
coincidirá con todos los identificadores que comiencen porsomeId
.[id$='someId']
coincidirá con todos los identificadores que terminen ensomeId
.[id*='someId']
coincidirá con todos los identificadores que contengansomeId
.Si está buscando el
name
atributo, simplemente sustitúyaloid
porname
.Si está hablando del nombre de la etiqueta del elemento, no creo que haya una manera de usar
querySelector
fuente
document.querySelectorAll("div[id$='foo']")
IE8 solo tiene soporte QSA parcial, creo que solo admiten selectores CSS2.1, por lo que estos selectores no funcionarán en IE8, pero IE9 + funcionará.Estaba jugando / reflexionando en frases que incluyen querySelector () y terminé aquí, y tengo una posible respuesta a la pregunta OP usando nombres de etiqueta y querySelector (), con créditos a @JaredMcAteer por responder MI pregunta, también conocido como RegEx-like coincide con querySelector () en Javascript vainilla
Esperando que lo siguiente sea útil y se ajuste a las necesidades del OP o de los demás:
Entonces, podemos, por ejemplo, obtener el material src, etc.
fuente
Establezca el tagName como un atributo explícito:
Yo mismo necesitaba esto, para un documento XML, con etiquetas anidadas que terminaban en
_Sequence
. Consulte la respuesta de JaredMcAteer para obtener más detalles.No dije que sería bonito :) PD: recomendaría usar
tag_name
over tagName, para que no te encuentres con interferencias cuando leas atributos DOM implícitos 'generados por computadora'.fuente
Acabo de escribir este breve guión; parece funcionar.
fuente
Hay una manera de decir lo que no es. Simplemente haga que el no sea algo que nunca será. Una buena referencia de selector de CSS: https://www.w3schools.com/cssref/css_selectors.asp que muestra: no selector de la siguiente manera:
Aquí hay un ejemplo: un div seguido de algo (cualquier cosa menos una etiqueta az)
fuente