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

183
Vistas
¿Cómo hacer que un evento onclick cambie una variable en el alcance global?

Necesito cambiar una variable global a través de un evento de clic, pero parece (sospecho) que no cambiará el valor de esa variable fuera del evento. Estoy buscando hacer algunos cálculos basados en variables locales de eventos de clic. Cuando lo declaro, recibo un mensaje de que las variables locales no están definidas. Es comprensible porque el evento aún no ha sucedido. Incluso después de que lo haga, puedo leer los valores actualizados de las variables locales en la consola del navegador, pero la variable global aún permanece sin definir.

Aquí hay algunos de los códigos relevantes:

 const tanqueSel = document.getElementById("tanqueSel"), soldadoSel = document.getElementById("soldadoSel"), guerreroSel = document.getElementById("guerreroSel"), vikingoSel = document.getElementById("vikingoSel"); let Eleccion tanqueSel.addEventListener("click", clickTanque) function clickTanque() { Eleccion = { ...tanque }; alert("Has seleccionado " + Eleccion.nombre); //I can access the new 'Eleccion' values here, but not outside } soldadoSel.addEventListener("click", clickSoldado) function clickSoldado() { Eleccion = { ...soldado }; alert("Has seleccionado " + Eleccion.nombre); } guerreroSel.addEventListener("click", clickGuerrero) function clickGuerrero() { Eleccion = { ...guerrero }; alert("Has seleccionado " + Eleccion.nombre); } vikingoSel.addEventListener("click", clickVikingo) function clickVikingo() { Eleccion = { ...vikingo }; alert("Has seleccionado " + Eleccion.nombre); } let daño = (Eleccion.ataque - monstruo.defensa); //According to the console this is where the problem is, since 'Eleccion' is undefined
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Es un gran antipatrón usar variables globales.

Además, la razón por la que no está undefined es porque está accediendo a esa variable en la pila de llamadas inicial de la aplicación (eso significa que aún no se ha hecho clic, así que sí, no está definido).

Supongo que está tratando de calcular el 'daño' de un método de ataque.

¿Cuándo quieres aplicar ese daño? ¿No debería estar dentro del controlador de clics también?

 soldadoSel.addEventListener("click", clickSoldado) function clickSoldado(){ // you can remove completely the global variable and use a generic function attack(soldado); } //...same for every other click listener (you call attack method with the selection) // and create a generic attack function function attack(selected) { alert("Has seleccionado " + selected.nombre); let daño = selected.ataque - monstruo.defensa; // here you have the damage, you can do what you want with it. //... }
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