elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Personaliza-Escoge el diseño del foro que más te guste.


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  [Pregunta]: Detectar un click sobre un elemento
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Pregunta]: Detectar un click sobre un elemento  (Leído 589 veces)
MiguelCanellas


Desconectado Desconectado

Mensajes: 579



Ver Perfil
[Pregunta]: Detectar un click sobre un elemento
« en: 29 Enero 2019, 20:23 »

Buenas tardes!

Mi problema es el siguiente, necesito detectar cuando se hace un click a un elemento, normalmente uso una ID para esto pero de ante mano no se cual será la cantidad de botones en la que se podrá hacer click, es por eso que usar una ID esta descartado ya que una ID sólo se puede usar en un elemento.

digamos que el código es..

Código
  1. var boton = document.getelementbyid('el_boton');
  2.  
  3. boton.addEventListener('click', boton_click, false);
  4.  
  5. function boton_click()
  6. {
  7.  alert('se hizo un click');
  8. }
  9.  

mediante clases, ya que como dije mas arriba de entrada no tengo la cantidad de botones.. como podría hacerse algo parecido/similar?

Gracias desde ya!


En línea

iCoke

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: [Pregunta]: Detectar un click sobre un elemento
« Respuesta #1 en: 29 Enero 2019, 21:19 »

Código:
const detectarClick = (classBoton) => {
    let boton = Array.prototype.slice.apply(document.querySelectorAll(classBoton));

        boton.forEach(element => {
            element.addEventListener('click',()=>{
                  alert('se hizo un click');
                })
        });
         

 
}
detectarClick(".btnEditarPack")

Saludos amiguito!


En línea

EdePC
Colaborador
***
Conectado Conectado

Mensajes: 1.265



Ver Perfil
Re: [Pregunta]: Detectar un click sobre un elemento
« Respuesta #2 en: 29 Enero 2019, 23:33 »

Saludos,

- Puedes adjuntar el Evento al Contenedor de los Botones, luego examinas el evento y sacas el Target, el cual es el Elemento dentro del contenedor que ha recibido el Evento (btn.target):

https://jsbin.com/rijihogepi/edit?html,output

Código
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.  <meta charset="utf-8">
  5.  <meta name="viewport" content="width=device-width">
  6.  <title>JS Bin</title>
  7. </head>
  8. <body>
  9.  <div id="botones">
  10.    <button>Botón 1</button>
  11.    <button>Botón 2</button>
  12.    <button>Botón 3</button>
  13.    <button>Botón 4</button>
  14.    <button>Botón 5</button>
  15.  </div>
  16.  <div id="log"></div>
  17.  <script>
  18.    document.getElementById("botones").addEventListener("click", function(btn){
  19.      document.getElementById("log").innerHTML = btn.target.innerHTML;
  20.    }, false);
  21.  </script>
  22. </body>
  23. </html>
En línea

MiguelCanellas


Desconectado Desconectado

Mensajes: 579



Ver Perfil
Re: [Pregunta]: Detectar un click sobre un elemento
« Respuesta #3 en: 30 Enero 2019, 22:07 »

Código:
const detectarClick = (classBoton) => {
    let boton = Array.prototype.slice.apply(document.querySelectorAll(classBoton));

        boton.forEach(element => {
            element.addEventListener('click',()=>{
                  alert('se hizo un click');
                })
        });
          

  
}
detectarClick(".btnEditarPack")

Saludos amiguito!

¡Muchas gracias a los dos por responder!
El código funciona pero necesito saber la posición o la cantidad del elemento al que se hizo click.. digamos hay 3 divs.. en cada div esta ese boton (con la misma clase)
al dar click deberia mandar un mensaje "se hizo click en el boton X" X sería el numero de la clase, osea si es el elemento 1 con esa clase, el 2, el 3, o el 4 dependiendo cuantos tenga con esa clase.. no se si me explico.. gracias!!

ACTUALIZACIÓN: Hice esto pero lo que hace es imprimirme la posición el ultimo elemento no del cual hice click.

Código
  1.        var boton_options = document.querySelectorAll('.boton_options_anuncio');
  2. var cant_boton_options = document.querySelectorAll('.boton_options_anuncio').length;
  3.  
  4. for(var i = 0; i < cant_boton_options; i++)
  5. {
  6. var boton = boton_options[i];
  7.  
  8. boton.addEventListener('click', function(){si(i)}, false);
  9. }
  10.  
  11. function si(i)
  12. {
  13. console.log(i);
  14. }
  15.  
« Última modificación: 30 Enero 2019, 23:10 por MiguelCanellas » En línea

iCoke

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: [Pregunta]: Detectar un click sobre un elemento
« Respuesta #4 en: 31 Enero 2019, 01:27 »

no se si entendi bien, proba esto..

Código
  1. const detectarClick = (classBoton) => {
  2.    let boton = Array.prototype.slice.apply(document.querySelectorAll(classBoton));
  3.  
  4.        boton.forEach(element => {
  5.            element.addEventListener('click',()=>{
  6. let msj = element.textContent
  7.                  alert(`hiciste click en: ${msj}`);
  8.                })
  9.        });
  10.  
  11.  
  12.  
  13. }
  14. detectarClick(".btn")
[/tt]

Código
  1. <div id="botones">
  2.  <button class="btn">boton 1</button>
  3.  <button class="btn">boton 2</button>
  4.  <button class="btn">boton 3</button>
  5.  <button class="btn">boton 4</button>
  6. </div>

si no es esto lo que buscas avisame, y pruebo de nuevo ajja saludos!
En línea

MiguelCanellas


Desconectado Desconectado

Mensajes: 579



Ver Perfil
Re: [Pregunta]: Detectar un click sobre un elemento
« Respuesta #5 en: 31 Enero 2019, 03:11 »

no se si entendi bien, proba esto..

Código
  1. const detectarClick = (classBoton) => {
  2.    let boton = Array.prototype.slice.apply(document.querySelectorAll(classBoton));
  3.  
  4.        boton.forEach(element => {
  5.            element.addEventListener('click',()=>{
  6. let msj = element.textContent
  7.                  alert(`hiciste click en: ${msj}`);
  8.                })
  9.        });
  10.  
  11.  
  12.  
  13. }
  14. detectarClick(".btn")
[/tt]

Código
  1. <div id="botones">
  2.  <button class="btn">boton 1</button>
  3.  <button class="btn">boton 2</button>
  4.  <button class="btn">boton 3</button>
  5.  <button class="btn">boton 4</button>
  6. </div>

si no es esto lo que buscas avisame, y pruebo de nuevo ajja saludos!

Probé tu código pero me salen muchos cuadraditos en lugar del valor algo así.. "hiciste click en: [][][][][][][][][][]"
En línea

EdePC
Colaborador
***
Conectado Conectado

Mensajes: 1.265



Ver Perfil
Re: [Pregunta]: Detectar un click sobre un elemento
« Respuesta #6 en: 31 Enero 2019, 05:05 »

- Por otro lado, yo estoy entiendo de que quieres usar un bucle for para indexar cada botón que tenga una clase específica. Dicho índice es el número de botón procesado el el bucle para agregarle el evento click, y que dicho evento debe mostrar ese índice.

https://jsbin.com/layunogihu/edit?html,output

Código
  1.  <div id="botones">
  2.    <button class="btn">boton 1</button>
  3.    <button class="btn">boton 2</button>
  4.    <button class="btn">boton 3</button>
  5.    <button class="btn">boton 4</button>
  6.  </div>
  7.  <div id="log"></div>
  8.  
  9.  <script>
  10.    let botones = document.querySelectorAll('.btn');
  11.    let index = 1;
  12.    for (let boton of botones) {
  13.      let mensaje = `Click en el botón: ${index}`;
  14.      boton.addEventListener('click', () => alert(mensaje));
  15.      index++;
  16.    }
  17.  </script>
  18.  
« Última modificación: 31 Enero 2019, 05:30 por EdePC » En línea

MiguelCanellas


Desconectado Desconectado

Mensajes: 579



Ver Perfil
Re: [Pregunta]: Detectar un click sobre un elemento
« Respuesta #7 en: 31 Enero 2019, 05:31 »

- Por otro lado, yo estoy entiendo de que quieres usar un bucle for para indexar cada botón que tenga una clase específica. Dicho índice es el número de botón procesado el el bucle para agregarle el evento click, y que dicho evento debe mostrar ese índice.

https://jsbin.com/layunogihu/edit?html,output

Código
  1.  <div id="botones">
  2.    <button class="btn">boton 1</button>
  3.    <button class="btn">boton 2</button>
  4.    <button class="btn">boton 3</button>
  5.    <button class="btn">boton 4</button>
  6.  </div>
  7.  <div id="log"></div>
  8.  
  9.  <script>
  10.    let botones = document.querySelectorAll('.btn');
  11.    let index = 1;
  12.    for (let boton of botones) {
  13.      boton.addEventListener('click', () => alert('Click en el boton: ' + index++));
  14.    }
  15.  </script>

WOAO! Me salvaste la vida Ede GRACIAS! igualmente, MUCHAS GRACIAS ICOKE!!!!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines