setTimeout работает в Chrome, но не Firefox для анимации затухания - PullRequest
0 голосов
/ 13 февраля 2012

РЕДАКТИРОВАТЬ: Похоже, это был сбой 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 функция будет выполнена один раз, затем остановится.Есть идеи?

...