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

177
Vistas
¿Cómo pasar objetos a funciones en javascript entre diferentes eventos de clic?

¿Por qué este código indica que las propiedades de mi objeto no están definidas?

 document.getElementById("mkObj").addEventListener('click', () => { var globalDragon = mkObj(document.getElementById("cn").value, parseInt(document.getElementById("ch").value), document.getElementById("cl").value); document.getElementById("hit").addEventListener('click', (globalDragon) => { hit(globalDragon, 25); printObjDetails(globalDragon); }); document.getElementById("details").addEventListener('click', (globalDragon) => { let dragon_here = globalDragon; printObjDetails(dragon_here); }); });

¿Por qué no puedo simplemente crear el objeto Dragon haciendo clic en el botón mkObj y luego hacer clic en el botón de acción o en el botón de detalles y hacer que muestre el estado del objeto? ¿Por qué muestra que globalDragon.name no está definido?

Tenía el código con este aspecto antes y tampoco funcionó, así que simplemente hago que todo esté dentro del alcance del clic de mkObj, pensando que eso resolvería el problema, pero no fue así:

 document.getElementById("mkObj").addEventListener('click', ()=>{ var globalDragon = mkObj( document.getElementById("cn").value, parseInt( document.getElementById("ch").value), document.getElementById("cl").value ); }); document.getElementById("hit").addEventListener('click', (globalDragon)=>{ hit(globalDragon, 25); printObjDetails(globalDragon); }); document.getElementById("details").addEventListener('click', (globalDragon)=>{ let dragon_here = globalDragon; printObjDetails(dragon_here); });
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Creo que lo que realmente quieres es

 // declare the variable in the top scope, // so that all three click handlers can access it var globalDragon; document.getElementById("mkObj").addEventListener('click', () => { // write a new object into the global variable globalDragon = mkObj( document.getElementById("cn").value, parseInt( document.getElementById("ch").value), document.getElementById("cl").value ); }); document.getElementById("details").addEventListener('click', () => { // read from the global variable printObjDetails(globalDragon); }); document.getElementById("hit").addEventListener('click', () => { // modify the object hit(globalDragon, 25); printObjDetails(globalDragon); });

Observe cómo eliminé los parámetros de las funciones que también se llamaron globalDragon . A los controladores de eventos se les pasa un objeto de evento como sus argumentos.

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