Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

169
Vistas
No puedo proporcionar un Oyente de eventos a mi clase <a href=

Hice esto con éxito para una identificación de elemento; le dio el detector de eventos 'clic' para que aparezca un modal una vez que se lleve a cabo la acción. Ahora, estoy intentando con el mismo código JS pero apuntando a una clase en lugar de la identificación y no aparece nada, el enlace simplemente me lleva al sitio directamente en lugar de hacer que aparezca el modal.

Vale la pena decir que mi elemento id es un botón de la barra de navegación, y mi elemento class es solo texto con <a href= element y class= "link-to-app" . Aquí está el código para el botón de la barra de navegación, que se está ejecutando correctamente:

 <script> //Client Login: Redirect Modal document.querySelector('.redirect-modal').style.display = 'none'; document.getElementById('btn-nav').addEventListener ('click', function() { document.querySelector ('.redirect-modal').style.display = 'flex'; document.querySelector ("body").style.overflow = 'hidden'; }); //Redirect Modal: Close document.querySelector('.close').addEventListener ('click', function() { document.querySelector ('.redirect-modal').style.display = 'none'; document.querySelector ("body").style.overflow = 'visible'; }); </script>

Luego, el código para el elemento de clase, que como ya dije, no funciona:

 <script> document.getElementsByClassName('.link-to-app').addEventListener('click', function() { document.querySelector('.redirect-modal').style.display = 'flex'; document.querySelector("body").style.overflow = 'hidden'; }) </script>

No sé si usar una matriz con el método forEach ayudaría, y en tal caso, no sé si necesito eliminar el código de la ID e incluir este en la matriz junto con la clase. Cualquier ayuda sería genial, he probado varios métodos pero nada parece funcionar correctamente. Gracias de antemano.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

document.querySelector() y document.getElementById() devuelven un solo nodo, por lo que parece que esa parte del código debería funcionar. Pero document.getElementsByClassName() devuelve una HTMLCollection que no es algo a lo que pueda llamar directamente a .addEventListener() . Debería iterar esa colección para obtener cada nodo en la lista y luego llamar a node.addEventListener() en cada uno. Puede usar un bucle for para iterar la lista de nodos.

Para tu información, puedes ver cómo iterar la lista aquí .

 <script> const items = document.getElementsByClassName('.link-to-app'); for (let item of items) { item.addEventListener('click', function() { document.querySelector('.redirect-modal').style.display = 'flex'; document.querySelector("body").style.overflow = 'hidden'; }) } </script>
about 4 years ago · Juan Pablo Isaza Denunciar

0

Yo haría de esta manera:

 document.getElementsByClassName('link-to-app')[0].addEventListener('click', function(event) { event.preventDefault(); document.querySelector('.redirect-modal').style.display = 'flex'; document.querySelector("body").style.overflow = 'hidden'; });

Solo porque "getElementsByClassName" devuelve una matriz con todos los elementos que coinciden con esa etiqueta, uso [0] para referirme a ese elemento, solo si hay un elemento con esa etiqueta, si hay más, debe hacer una iteración.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda