Comunidad de diseño web y desarrollo en internet online

setTimeout: fallo al pasar parámetros

Citar            
MensajeEscrito el 13 Ene 2008 02:49 pm
Buenas tardes a todos:
Llevo ya unos días investigando sobre la creación de efectos visuales para web por mí mismo, como transiciones, degradados, animaciones pequeñas y tal; sin usar JQuery para nada, ya que mi objetivo es saber hacer las cosas un tanto desde cero.
Resulta que ahora estoy intentando crear una función que haga desvanecerse cualquier contenedor u otro elemento de la página, pasándole a la misma funcion el ID del elemento en cuestión. El problema, es que al ser una función recursiva, pues empleo setTimeout dentro de la misma para llamarla, no es capaz de funcionar al pasarle el ID como parámetro, a pesar de haber empleado la sintaxis: setTimeout('funciónquesea(' +parámetro+ ')', milisegundos);

En cambio, si no paso parámetros a la función que tengo, a la que llamé fadeOut, funciona perfectamente. No soy capaz de encontrar el error.

Ahí va el código:

Código :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>DHTML y CSS Avanzado | Efectos visuales</title>
<script language="javascript" type="text/javascript" src="arrays.js"></script>
<style>
a
{
font-weight: bold;
text-decoration: none;
outline: 0;
}

#enlace
{
   background: orange;
   width: 200px;
   height: 200px;
   overflow: hidden;
}   
</style>
<script language="JavaScript">
opacity = 100
function fadeOut(id)
{
   opacity -= 1;
   document.getElementById(id).style.opacity = opacity/100;
   setTimeout('fadeOut('+id+')', 10);
}
</script>
</head>

<body>
<a href="javascript:fadeOut('enlace')">Desvanecer</a>
<div id="enlace"></div>
</body>
</html>


De antemano, gracias por la ayuda. :)

Por Onusk8

4 de clabLevel



Genero:Masculino  

Huelva

firefox
Citar            
MensajeEscrito el 13 Ene 2008 05:30 pm
Suele ser de ayuda revisar el depurador de errores antes de preguntar.
Si lo hubieras hecho, habrías visto esto:

Código :

Error: enlace is not defined

Lo que es clara explicación del motivo de porqué no funciona la función, y dónde, y en qué línea, está el error.
"enlace", no es una variable definida.

Por El Oso Amoroso

Claber

1780 de clabLevel

6 tutoriales

 

Madrid, España, Europa, Eurasia, La Tierra, Sist.Solar, Vía Láctea, UNIVERSO

firefox
Citar            
MensajeEscrito el 15 Ene 2008 05:14 am
Creo que lo que rizome esta tratando de decir es lo siguiente:

Tenes esto:
setTimeout('fadeOut('+id+')', 10);

Parseado se veria así: fadeOut(enlace);
como podes ver, enlace no queda entre comillas, entonces esta intentando leer una variable de nombre enlace que no esta definida.

Para que funcione podes intentar lo siguiente:

setTimeout('fadeOut("'+id+'")', 10);
De manera que se interprete fadeOut("enlace");
quedando enlace como un string y no una variable

Saludos!

Por xNephilimx

3 de clabLevel



Genero:Masculino  

Buenos Aires, Argentina

firefox
Citar            
MensajeEscrito el 15 Ene 2008 05:17 am
Ah, por cierto, ya que usas firefox, te recomiendo que te instales el Firebug, un plugin muy util para depurar javascript, asi vas a poder ver bien todos los errores que podes tener, ademas de ejecutar codigo directamente sobre las paginas (eso si, deshabilitado para gmail, xq tiene un bug que lo hace andar mal)

www.getfirebug.com

Saludos!

Por xNephilimx

3 de clabLevel



Genero:Masculino  

Buenos Aires, Argentina

firefox
Citar            
MensajeEscrito el 15 Ene 2008 10:40 am

xNephilimx escribió:

Parseado se veria así: fadeOut(enlace);
[...]
Para que funcione podes intentar lo siguiente:
setTimeout('fadeOut("'+id+'")', 10);

Exacto.
(aunque quería dejarle algo de trabajo a él)
:cool:

Por El Oso Amoroso

Claber

1780 de clabLevel

6 tutoriales

 

Madrid, España, Europa, Eurasia, La Tierra, Sist.Solar, Vía Láctea, UNIVERSO

firefox
Citar            
MensajeEscrito el 16 Ene 2008 02:07 pm
Muchas gracias por sus respuestas, aunque ya conseguí hacerlo funcionar declarando la variable enlace. Quería un principio tratar como cadena ese parámetro, tal como me indicó xNephilimx.
Jeje, un saludo

Por Onusk8

4 de clabLevel



Genero:Masculino  

Huelva

msie7

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.