JavaScript - getElementById().onclick

 
Vista:
sin imagen de perfil

getElementById().onclick

Publicado por zefalo (10 intervenciones) el 21/05/2015 12:06:56
Estoy haciendo un for con el que cambi varias propiedades de unos botones, la que me esta dando guerra es la siguiente:

document.getElementById(i).onclick = function onclick(event) { responder(codigo[cont_arr[i]], i, resp); };
alert(document.getElementById(i).onclick);

el alert me devuelve literalmente, alguien sabe porque?:
function onclick(event) { responder(codigo[cont_arr[i]], i, resp)
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
sin imagen de perfil

getElementById().onclick

Publicado por zefalo (10 intervenciones) el 21/05/2015 12:52:57
Solucionado:
document.getElementById(i).setAttribute("onclick", "responder(" + codigo[cont_arr[i]] + "," + i + "," + resp + ")");
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve
Val: 3.162
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

getElementById().onclick

Publicado por xve (2100 intervenciones) el 21/05/2015 14:13:37
Gracias por comentarlo Zefalo!!!
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
Imágen de perfil de Vainas
Val: 95
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

getElementById().onclick

Publicado por Vainas (258 intervenciones) el 22/05/2015 20:07:53
Buenas:

Ya se que el mesaje esta solucionado pero creo tener otra solucion y la dejo por si le interesa al foro. Este problema es sobre el que hablo siempre en el foro y se llama closures.

En este caso he visto a alguien que lo resuelve pasandole al onclick una funcion que se ejecutará en el mismo momento del for y devolverá una function que se incluirá como la de onlick (me explico mal ya lo se, lo dejo en codigo):

1
2
3
4
5
6
carga_onclick = function (param1, param2, param3){
	return function(event){responder(param1,param2,param3)};
}
 
document.getElementById(i).onclick = carga_onclick(codigo[cont_arr[i]], i, resp);
alert(document.getElementById(i).onclick);

No lo he probado pero por lo que he leido asi tendria que funcionar.

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