Написал функцию, код ниже. Она задает CSS стили элементу через заданное время и убирает их через второе заданное время, а точнее возвращает к старому значению. Работает она в содружестве с Jquerry....
Суть проблемы - как видите, использую setTimeout и если вызывать функцию часто, она работает некорректно - стили задаются, но не убираются =\ Почему?
Синтаксис:
animate(
{
свойство:значение,
свойство:значение,
....
time: [время установки(мс), время существования(мс)]
},
{
свойство:значение,
свойство:значение,
....
time: время установки(мс)
},
........
);
//elem - элемент которому задаются стили...объявлен он в другом месте
for(var e in arguments){
e = arguments[e];
if(e.time){
var r = (type(e.time) == "array") ? e.time[1] : false,
t = (type(e.time) == "array") ? e.time[0] : e.time;
delete e.time;
}else{
var t = 0, r = false;
}
var o = {};
for(var i in e) o[i] = $(elem).css(i);
(function(a,b,c,d){
setTimeout(function(){
$(elem).css(a);
if(d) setTimeout(function(){$(elem).css(c);}, d);
},b);
})(e,t,o,r);
}
Пример использования.....
var elem = document.getElementById("test");
animate({"opacity":0, time:[0,1000]});
//Прозрачность мгновенно сменится на 0 и спустя 1с вернется к исходному значению.