Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

181
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!