Saltar al contenido

Seleccione div usando ID de comodín

Mateo, parte de este equipo, nos ha hecho el favor de crear este artículo porque controla a la perfección este tema.

Solución:

Solución comodín basada en la identificación del elemento attribute

Sí, es posible. Esto responde a su pregunta directamente sin depender de JavaScript o API de terceros o attributes que no sea el id del elemento. Además, no tienes que usar class=

Ejemplo de llamada de método personalizado

// Uses JavaScript regex features to search on id= attribute
var arrMatches = document.getElementsByRegex('^statusMessage_.*');

Esto obtiene un array que contiene todos los elementos que tienen una identificación que comienza con “statusMessage_” (incluso los anidados).

Ejemplo de implementación: reutilizable y genérico

Aquí hay una implementación para el getElementsByRegex función que busca en el DOM la expresión regular dada, a partir de document. Se adjunta al objeto del documento por conveniencia y de acuerdo con el comportamiento esperado.




Es probable que haya implementaciones más eficientes, pero esta proporciona un comienzo. El cuerpo de la función se puede reemplazar con otros algoritmos según el gusto.

Probar el código

Finalmente, pruébelo usando una publicidad HTML que tenga elementos anidados como este



1
2
other stuff
3

Este bloque HTML contiene tres elementos que comienzan con id="statusMessage_; por lo tanto, la prueba de alerta dirá

“encontré 3 coincidencias – esperaba 3”

Anexo de información para variaciones

Si desea restringir la búsqueda solo a elementos div o algún otro tipo de elemento específico, deberá inyectar lo siguiente getElementByTagName código en el algoritmo para restringir el conjunto de elementos buscados.

var arrDivs = document.getElementsByTagName("div"); // pull all divs from the doc

Es posible que desee modificar el algoritmo genérico pasando el nombre de la etiqueta en un segundo argumento para filtrar antes de que comience la búsqueda de esta manera

var arrMatches = document.getElementsByRegex('^statusMessage_.*', 'div');

Solo pensé que valía la pena actualizar el hilo con una forma más reciente de hacer esto en JavaScript, ya que todavía aparecía en las búsquedas.

document.querySelector("[id^='statusMessage_']");

caniuse.com enumera que se puede usar en ID de IE8 y es un excelente soporte en otros navegadores.

Usando jQuery puedes hacer esto

$("div[id^='statusMessage_']")

Ver atributoEmpiezaCon

Editar – con selector de nombre de clase

Si puede usar un nombre de clase, entonces puede usar algo como esto

$$('div.myDivClass');

obtiene todos los elementos div con la clase ‘myDivClass’

Acuérdate de que tienes autorización de valorar este artículo si diste con la respuesta.

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 4.5)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *