queryselectorall queryselector name ejemplos javascript dom domparser selectors-api

javascript - name - queryselector vs getelementbyid



querySelector, coincidencia de elemento comodín? (5)

Acabo de escribir este breve guión; parece funcionar.

/** * Find all the elements with a tagName that matches. * @param {RegExp} regEx regular expression to match against tagName * @returns {Array} elements in the DOM that match */ function getAllTagMatches(regEx) { return Array.prototype.slice.call(document.querySelectorAll(''*'')).filter(function (el) { return el.tagName.match(regEx); }); } getAllTagMatches(/^di/i); // Returns an array of all elements that begin with "di", eg "div"

¿Hay alguna forma de hacer coincidir un nombre de elemento comodín con querySelector o querySelectorAll ? Veo soporte para comodines en consultas de atributos pero no para los elementos mismos.

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 no va a suceder.

Cualquier solución, excepto volver a usar el XPath aparentemente obsoleto (IE9 lo descarta) es aceptable.


Establezca tagName como un atributo explícito:

for(var i=0,els=document.querySelectorAll(''*''); i<els.length; els[i].setAttribute(''tagName'',els[i++].tagName) );

Lo necesitaba yo mismo, para un documento XML, con etiquetas anidadas que terminan en _Sequence . Vea la respuesta de JaredMcAteer para más detalles.

document.querySelectorAll(''[tagName$="_Sequence"]'')

No dije que sería bonito :) PD: recomendaría usar tag_name sobre tagName, para que no se tag_name con interferencias cuando se leen los atributos DOM ''generados por computadora''.


Esto funciona para mí:

NSString *nameInWeb = [NSMutableString stringWithFormat:@"document.querySelector(''[name$=/"057/"]'').name"];

Muestra todos los nombres que terminan con "057".


Estuve jugando / meditando sobre one-liners que implican querySelector () y terminé aquí, y tengo una posible respuesta a la pregunta de OP usando nombres de etiquetas y querySelector (), con créditos a @JaredMcAteer para responder MI pregunta, también tengo RegEx-like coincide con querySelector () en vainilla Javascript

Esperando que lo siguiente sea útil y se ajuste a las necesidades del OP o al de los demás:

// basically, of before: var youtubeDiv = document.querySelector(''iframe[src="http://www.youtube.com/embed/Jk5lTqQzoKA"]'') // after var youtubeDiv = document.querySelector(''iframe[src^="http://www.youtube.com"]''); // or even, for my needs var youtubeDiv = document.querySelector(''iframe[src*="youtube"]'');

Entonces, podemos, por ejemplo, obtener las cosas src, etc.

console.log(youtubeDiv.src); //> "http://www.youtube.com/embed/Jk5lTqQzoKA" console.debug(youtubeDiv); //> (...)

+


[id^=''someId''] coincidirá con todos los someId comiencen con someId .

[id$=''someId''] coincidirá con todos los identificadores que terminan con someId .

[id*=''someId''] coincidirá con todos los someId contengan someId .

Si está buscando el atributo de name simplemente sustituya el id con el name .

Si está hablando sobre el nombre de la etiqueta del elemento, no creo que haya una forma de usar querySelector