Saludos. Amigos especialistas en javascript, tengo un problema que no se como resolver y tal vez ustedes me puedan ayudar a entender por qué no funciona. Es un código para mostrar una imagen con fadein. El problema es que se queda en el primer nivel de opacidad y jamás alcanza el 100% de opacidad. Es como si no terminara el siclo de timeout. Revísenlo, tal vez logren ver algo que yo no he visto:
Código:
function ShowP(i,t){
// 'P'+i es el id de la imagen que se va a mostrar y t es la cantidad total de imágenes
for(a = 1; a <= t; a++){
//esto es para ocultar todas las imágenes
elm = document.getElementById('P'+ a);
elm.style.display = 'none';
}
//esto es para mostrar la imagen deseada
elm = document.getElementById('P'+ i);
elm.style.display = 'block';
//aquí llamo a la función para iniciar el ciclo
Anim(0,elm,10);
}
function Anim(a,e,t){
if(a<1){
//la animacion se realiza solamente si el contador a es menor que 1
a += 0.1;
//aquí establezco el nivel de opacidad segón el contador a para todos los navegadores
if (document.all){
//esto es para IE, como siempre hay q programarlo a parte
e.style.filter = 'alpha(opacity='+(a*1000)+')';
}else{
// Safari 1.2, posterior Firefox y Mozilla, CSS3
e.style.opacity = a;
// anteriores Mozilla y Firefox
e.style.MozOpacity = a;
// Safari anterior a 1.2, Konqueror
e.style.KHTMLOpacity = a;
}
//aquí llamo recursivamente a la función Anim con un setTimeout mientras a sea menor que 1
time = setTimeout("Anim(a,e,t)",t);
}else{
//si el contador a es mayor o igual que 1 no aumenta de 1
a = 1;
//entonces pongo 100% de opacidad para todos los navegadores
if (document.all){
//esto es para IE, como siempre hay q programarlo a parte
e.style.filter = 'alpha(opacity='+(a*1000)+')';
}else{
// Safari 1.2, posterior Firefox y Mozilla, CSS3
e.style.opacity = a;
// anteriores Mozilla y Firefox
e.style.MozOpacity = a;
// Safari anterior a 1.2, Konqueror
e.style.KHTMLOpacity = a;
}
}
}
Espero que me puedan ayudar, gracias.