Foros del Web » Programando para Internet » Javascript »

Llamada de función con pasada de variables en un setTimeout

Estas en el tema de Llamada de función con pasada de variables en un setTimeout en el foro de Javascript en Foros del Web. Muy buenas, tengo esta clase en javascript : Código: function MenuList (param1, param2) { /* Variables */ var main = getEl (param1); var sub = ...
  #1 (permalink)  
Antiguo 18/03/2011, 12:19
 
Fecha de Ingreso: julio-2009
Mensajes: 30
Antigüedad: 14 años, 9 meses
Puntos: 0
Llamada de función con pasada de variables en un setTimeout

Muy buenas, tengo esta clase en javascript:
Código:
function MenuList (param1, param2)
{
	/* Variables */
	var main = getEl (param1);
	var sub = getEl (param2);
		
	/* Eventos */
	main.onmouseover = hover;
	main.onmouseout = leave;
	
	function hover ()	// 	
	{
		for (var i = 0; i <= 10; i++)
		{
			setTimeout('opacidad (' + i + ')', i * 50);
		}
	}

	function leave ()
	{
		for (var i = 10; i > 0; i--)
		{
			setTimeout ('opacidad (' + i + ')', (10 - i) * 50);
		}
	}
	
	function opacidad (value)
	{
		sub.style.opacity = value / 10;
		// sub.style.filter = 'alpha(opacity=' + val * 10 + ')';
	}

	function getEl (val)
	{
		return (typeof (val) == 'string') ? document.getElementById(val) : val;
	}
}
Pues bien, en el setTimeout no sé por qué pero no puedo llamar a la función opacidad (value), si lo sustituyo por un alert con las mismas comillas funciona perfectamente. Si elimino las comillas y quito la variable pasada por parámetro también, sin embargo necesito pasar la variable.

¿Alguna idea? Gracias de antemano.

Última edición por Maracanaido; 18/03/2011 a las 12:26
  #2 (permalink)  
Antiguo 18/03/2011, 12:51
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 11 meses
Puntos: 834
Respuesta: Llamada de función con pasada de variables en un setTimeout

En lugar de esto:
Código PHP:
setTimeout ('opacidad (' ')', (10 i) * 50); 
usá esto:
Código PHP:
setTimeout (function(){opacidad(i);}, (10 i) * 50); 
Y lo mismo para setTimeouts semejantes.

Etiquetas: llamada, variables
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 00:54.