Я пытаюсь настроить функцию в 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) продолжает полностью исчезать.
Мой вопрос: что я могу сделать, чтобы вызов fade (false) отменил цикл вызова fade (true)?