Показать сообщение отдельно
  #1 (permalink)  
Старый 06.05.2012, 05:37
Аватар для yashka525
Mr. Jacob
Отправить личное сообщение для yashka525 Посмотреть профиль Найти все сообщения от yashka525
 
Регистрация: 20.01.2011
Сообщений: 194

Функция SmoothOpacity
Можете посоветовать как улучшить эту функцию? Ведь eval - нехорошо... или нормально?

Если что не понятно - могу комментарии поставить. Но вроде и так все понятно.

var IE = /*@cc_on!@*/0;

function SmoothOpacity(Element, StartFrom, EndOn, Step, Speed, OnComplete){

	IE?(Element.style.filter = 'alpha(opacity=' + StartFrom * 100 + ')'):(Element.style.opacity = StartFrom);
	
	(StartFrom < EndOn)?(
		Condition = 'EndOn > StartFrom'
	):(
		Condition = 'StartFrom > EndOn'
	)
	
	var NewCondition = Condition;
	
	(function(){
		if(eval(NewCondition)){
			StartFrom += Step;
			
			IE?(Element.style.filter = 'alpha(opacity=' + StartFrom * 100 + ')'):(Element.style.opacity = StartFrom);
			
			setTimeout(arguments.callee, Speed);
		}
		else{ //Если уже прозрачность достигла желаемой цифры
			IE?(Element.style.filter = 'alpha(opacity=' + EndOn * 100 + ')'):(Element.style.opacity = EndOn);

			if(OnComplete != 'null'){
				OnComplete(); //Можно выполнить какую-нибудь функцию... или не выполнять - 'null'
			}
		}
	})();
};

//Вызывать так:

SmoothOpacity(document.getElementById('box'), 0, 1, .05, 90, 'null');

SmoothOpacity(document.body, 1, 0, -.08, 200, function(){alert('Done!')});
Ответить с цитированием