编辑:这似乎是一个Firefox故障。重新启动浏览器修复了它。
我编写了一个应该淡入或淡出元素的函数,或者根据输入交叉淡化两个元素。参数是元素,淡入淡出类型和可选的第二个元素。以下代码在Chrome中完美运行,但不适用于Firefox:
var timeElapsed=0;
var opacity;
var opacity2=1;
function fade(element,type,element2)
{
if(timeElapsed==0)
type=='out' ? opacity=1 : opacity=0;
if(type=='in') opacity+=.01;
else if(type=='out') opacity-=.01;
else { opacity+=.01; opacity2-=.01; }
element.style.opacity=parseFloat((opacity+'').substr(0,4));
if(element2) element2.style.opacity=parseFloat((opacity2+'').substr(0,4));
timeElapsed++;
timeElapsed==100 ? timeElapsed=0 : setTimeout(function(){ fade(element,type,element2) },1);
}
这是函数调用:
fade(document.getElementById('someElement'),'out');
这似乎是setTimeout的问题,因为在Firefox中该函数将执行一次,然后停止。有什么想法吗?