Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

182
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda