Foros del Web » Programando para Internet » Javascript »

Avanzado: Funciones dentro de propiedades =function(){alert('test')};

Estas en el tema de Avanzado: Funciones dentro de propiedades =function(){alert('test')}; en el foro de Javascript en Foros del Web. La razón de este post es comprender la lógica de este tipo de "referencia" o de asignación de funciones a la propiedad de un objeto. ...
  #1 (permalink)  
Antiguo 20/10/2006, 10:40
 
Fecha de Ingreso: octubre-2003
Ubicación: Cerca de una wifi o 3G
Mensajes: 328
Antigüedad: 20 años, 6 meses
Puntos: 4
Avanzado: Funciones dentro de propiedades =function(){alert('test')};

La razón de este post es comprender la lógica de este tipo de "referencia" o de asignación de funciones a la propiedad de un objeto.

Esto viene de este post
Porque no puedo modificar valores de onMouseOut onMouseOver?

El caso es que no se puede asignar una función de una forma lógica como por ejemplo:
Código HTML:
document.getElementById("arrowa1").onmouseout = "alert('test')";
Sin embargo para que funcione el alert('test') debo escribirlo así:
Código HTML:
document.getElementById("arrowa1").onmouseout = function() {alert('test')};
He testeado los comportamientos y creo que es por el manejo deficiente de javascript al tratar diferentes tipos de contenidos, ya sean numericos, texto, boleanos, funciones u objetos. Pero no estoy seguro de esto.

El problema es que si bien function(){alert('test')}; funciona, si la programación exige pasar una variable dentro del alert esta se pierde o funciona de una forma no esperada, por ejemplo:

Código HTML:
function select_this(id) {
	var li,file;
	for(li=1;li<6;li++)
	{
		file="square";
		if (li==1) file="arrow_left";
		if (li==5) file="arrow_right";
		document.getElementById("arrow"+li).src="images/"+file+"_blue.png";
		document.getElementById("arrowa"+li).onmouseout=function() {alert("valor="+li)};
	}
}
en este ejemplo se supondría que
document.getElementById("arrowa"+li).onmouseout
va tomandos los valores de alert("valor="+li)
sin embargo devuelve 6 que es el valor final de li al terminar el bucle.

Saludos y Gracias

PD: no necesito corregir este codigo, solo entender el porque.
  #2 (permalink)  
Antiguo 20/10/2006, 11:32
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Hola:

Has probado a poner un parámetro en la nueva función... :

document.getElementById("arrowa"+li).onmouseout=fu nction(li) {alert("valor="+li)};

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:30.