Hola Adso!
Lo que te pasa es muy normal... vamos que es un fallo muy común.
Lo que ocurre es que no puedes volver a emplear la variable capa en el sertimeout. Tienes que crear otra nueva con el valor de esta.
Yo te propondría que pusieras lo siguiente: Código PHP:
<Script language="JavaScript">
<!--
var tempcapa
function MueveCapa(capa){
tempcapa=capa
var anty, limite=145;
anty= parseInt(capa.style.top);
if (anty>limite){
return true;
}
else{
capa.style.top= anty + 10; setTimeout("MueveCapa(tempcapa)",5);
}
return true;
}
function DevuelveCapa(capa){
tempcapa=capa
var anty1, limite=12;
anty1= parseInt(capa.style.top);
if (anty1<limite){
return true;
}
else{
capa.style.top= anty1 - 10;
setTimeout("DevuelveCapa(tempcapa)",5);
}
return true;
}
//-->
</Script>
Si te fijas hemos creado la variable tempcapa. Esa variable simplemente nos sirve para guardar el valor de capa para luego emplearlo en el seTimeout.
A mi me pasó muchas veces lo que a tí! Hasta que me di cuenta de que era por eso me volví loco.
Un saludo!!