JavaScript - Ayuda con array en javascript

   
Vista:

Ayuda con array en javascript

Publicado por Pzycat29 (1 intervención) el 13/04/2015 04:11:30
Buenas noches, tengo un problema con un código javascript,
tengo un array donde guardo otros array con determinados campos
Que son el id de un input, y un tipo
Quiero asignarle a ese input un evento en este caso un blur para que ejecute una función para este caso solo puse un alert pero posteriormente lo cambiare a una determinada función.
El evento lo asigna correctamente el problema es que los parámetros de la función no son los correctos, siempre envía el ultimo parámetro del ultimo objeto del array.
Espero me puedan colaborar, Gracias.
dejo el código aquí.

https://jsfiddle.net/csw3g7tn/
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Vainas

Ayuda con array en javascript

Publicado por Vainas (239 intervenciones) el 13/04/2015 18:22:43
Buenas:

Lo que te pasa es un problema por que no entiendes (o no has visto aun) que son las closures en javascript. Primero te recomiendo que busques informacion en google y te leas un par de documentos. Yo te explico en tu ejemplo por que pasa y como, este caso lo resuelvo de otra forma.

En pocas palabras: cuando se ejecuta el for se asigna una funcion al evento onblur de cada id (eso lo tienes claro). Pero dentro de esa funcion usas una variable local de la funcion "eventos" (la variable "tipo"), pero no haces una copia de ella como tu piensas, lo que haces es como una referencia de la variable. onblur no se ejecuta hasta que suceda el evento. en el momento que suceda el evento buscara en memoria una variable que quedo asignada (variable "tipo"), pero ya ha pasado todo el for hace x tiempo asi que "tipo" tendra el ultimo valor que se le haya asignado.

Como he dicho antes onblur no se ejecuta hasta que suceda el evento. Depende de como se asigne el evento a una etiqueta puede que cuando se ejecute el evento dentro de el tengas una variable this que apunta al objeto donde se genero el evento.

Mira este codigo y entenderas lo que digo: https://jsfiddle.net/csw3g7tn/1/ cuando ejecutas la funcion que le has asignado a onblur este tiene una variable this que es el objeto que realizo la llamada, en tu caso alguno de los dos inputs. ya dentro de el puedes usar type o id recorriendo el objeto.

en mi caso sobraria dentro del array 'texto' y 'numero' ya que no les doy uso, en realidad uso la variable this.

Es un poco lioso de explicar en serio. Espero que lo hayas entendido al menos.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar