我正在尝试在JavaScript中设置一个函数来淡入或淡出我页面上的某些元素。淡入淡出本身工作正常,但是当其中一个试图取消另一个的动作时,我的问题就出现了。
//I know this is ugly, I'm just learning JavaScript again and plan to recode it after I learn some more...
var fadeOut = false
//set out to true to fade out, false to fade in
function fade(out) {
var steps = 1
var outSpeed = 100
var inSpeed = 10
var timer = 0
if (out) {
//fade out
fadeOut = true
for ( var i=100; i>=0; i-=steps ) {
if ( fadeOut ) {
setTimeout("set_el_opacity(" + (i / 100) + ")",
timer+=steps
} else {
break;
}
}
} else {
//fade in
fadeOut = false
for ( var i=0; i<=100; i+=steps ) {
if( !fadeOut ) {
setTimeout("set_el_opacity(" + (i / 100) + ")",
timer+=steps
} else {
break;
}
}
}
}
现在,淡出设置为比淡入慢。我希望用户看到它慢慢淡出,以便他们知道这是故意的,然后在需要元素时快速淡入(消除屏幕上的一些混乱不需要时)。
fade(true) 工作正常,fade(false) 工作正常且速度更快。当我调用fade(true) 后不久调用fade(false) 时,我的问题就出现了。淡入淡出相互争斗,然后,由于 fade(true) 调用运行得更快,它首先完成,而 fade(false) 调用继续将其全部淡出。
我的问题是:我能做些什么来使淡入淡出(假)调用取消淡入淡出(真)调用的循环?