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

231
Vistas
¿Cómo verificar si se hace clic en un botón dentro de una declaración if?

 function myFunction() { if(rock == true){console.log("dd")} }
 <div class="overview"> <div class="userSide"> <h4>User:</h4><span> </span> <img id="userImg" src="img/Paper.png" style="width: 220px; height: 220px;"> </div> <div class="compSide"> <h4>CPU:</h4><span> </span> <img id="compImg" src="img/Paper.png" style="width: 220px; height: 220px;"> </div> </div> <div class="userBTN"> <button id="rock" onclick="myFunction()">Rock</button> <button id="paper" onclick="myFunction()">Paper</button> <button id="scissors" onclick="myFunction()">Scissors</button> </div>
Tengo una función en 3 botones y quiero que la función analice en qué botón se hizo clic para realizar una tarea. ¿Es esto posible o tengo que agregar 3 funciones separadas?

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

0

Una manera fácil... haz que tu función tome un argumento como:

 function myFunction(whichOne) { if(whichOne == "rock"){console.log("dd")} }

y luego llamar a cada uno con el valor correcto:

 <div class="userBTN"> <button id="rock" onclick="myFunction('rock')">Rock</button> <button id="paper" onclick="myFunction('paper')">Paper</button> <button id="scissors" onclick="myFunction('scissors')">Scissors</button> </div>
about 4 years ago · Juan Pablo Isaza Denunciar

0

Solución

Podrías hacerlo de la siguiente manera:

 window.onload = () => { const clickHandler = (e) => { switch (e.target.dataset.rps) { case "rock": console.log('🗿'); break; case "paper": console.log('📃'); break; case "scissors": console.log('✂️'); break; default: console.log('undefined'); } }; document.querySelectorAll('button[data-rps]').forEach(it => it.addEventListener('click', clickHandler)); }
 <div class="userBTN"> <button data-rps="rock">Rock</button> <button data-rps="paper">Paper</button> <button data-rps="scissors">Scissors</button> </div>

atributo de datos vs id

Siento que trabajar con el atributo de datos en lugar de la identificación es mejor cuando se trabaja con este tipo de funcionalidad. Porque no está limitado a una identificación específica . Básicamente, podría copiar ese componente y colocarlo en otro lugar y seguiría funcionando.

En este caso específico, solo tiene que administrar 3 ID, pero si desea ampliar la funcionalidad , es fácil agregar rápidamente otro atributo de datos en su lugar (en general) y no tiene que reconstruir la lógica, porque usa el mismo conjunto de datos de nuevo.

Además, puede evitar agregar el controlador onClick tres veces y usar un selector más general para producir html limpio y evitar el código repetitivo .

Los data-rps de atributos de datos proporcionados se pueden usar para determinar el tipo.

usando el evento onclick

e.target se refiere al objetivo del evento, que es el elemento que ha activado el evento onClick.

about 4 years ago · Juan Pablo Isaza Denunciar

0

agregar un atributo de datos.

https://developer.mozilla.org/en-US/docs/Learn/HTML/Howto/Use_data_attributes

 <button data-name="rock" id="rock" onclick="myFunction">rock</button> ...

y puede verificar si está seleccionado con:

 function myFunction(event) { if (event.target.dataset.name === "rock") { // do something...... } }

O puede verificar su identificación.

 if (event.target.id === 'rock') { // do something }

Pero se ve semánticamente más limpio si le das un atributo de datos si miras el archivo HTML.

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