Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.10.2010, 15:40
Новичок на форуме
Отправить личное сообщение для mikser763 Посмотреть профиль Найти все сообщения от mikser763
 
Регистрация: 11.10.2010
Сообщений: 1

Прерывается выполнение функции при смене аргумента
Есть вот таких 2 функции для изменения прозрачности изображения.
Сделал с помощью них навигацию и обнаружил, что функция SmoothHide, если резко перевезти курсор на другой пункт меню, не успевает сделать элемент прозрачным, как был до наведения.

Как я понял при наведении на другой элемент, objId меняется и выполнение функции со старым objId прерывается. У кого-нибудь есть идеи как сделать?

var hT, sT;
flag=1
function SmoothShow(objId, x) 
{ 
var obj = document.getElementById(objId);
op = (obj.style.opacity)?parseFloat(obj.style.opacity):parseInt(obj.style.filter)/100; 
 
if(op < x) 
{ 
clearTimeout(hT);
op += 0.1; 
obj.style.opacity = op; 
obj.style.filter='alpha(opacity='+op*100+')'; 
sT=setTimeout('SmoothShow(\''+objId+'\', '+x+')',50); 
} 
}
function SmoothHide(objId, x) 
{
var obj = document.getElementById(objId);
op = (obj.style.opacity)?parseFloat(obj.style.opacity):parseInt(obj.style.filter)/100; 
		 
if(op > x) 
{ 
	clearTimeout(sT);
	op -= 0.1; 
	obj.style.opacity = op; 
	obj.style.filter='alpha(opacity='+op*100+')'; 
	hT=setTimeout('SmoothHide(\''+objId+'\', '+x+')',50); 
}
}
Ответить с цитированием
  #2 (permalink)  
Старый 11.10.2010, 16:36
Профессор
Отправить личное сообщение для exec Посмотреть профиль Найти все сообщения от exec
 
Регистрация: 21.01.2010
Сообщений: 1,022

function fxFade( element, from, to, time, delta, callback ) {
	delta = delta || function (x) {
		return x;
	};
	var IE = document.all && !window.opera,
	start = new Date().getTime();
	if (IE) {
		from *= 100,
		to *= 100;
	}
	element.fadeTimer = setTimeout(function () {
		var progress = (new Date().getTime() - start) / time,
		result = (to - from) * delta(progress) + from;
		if (IE) {
			element.style.filter = "alpha(opacity=" + result + ")";
		} else {
			element.style.opacity = result;
		}
		if (progress < 1) {
			element.fadeTimer = setTimeout(arguments.callee, 10);
		} else {
			callback && callback();
		}
	}, 10);
}


// 1 — начальное значение, 0 — конечное, 1000 — время
fxFade( document.getElementById("foo"), 1, 0, 1000 );
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подгрузка функции при загрузке страницы BorisBritva Элементы интерфейса 4 13.05.2010 21:59
Выполнение скрипта при нажатии Entet в текстовм поле Vlasssov Общие вопросы Javascript 4 23.08.2009 23:31
выполнение ф-ии при изменении состояния radio MaxB Events/DOM/Window 5 24.06.2009 14:24
Определить выполнение функции BAnder Events/DOM/Window 24 03.02.2009 20:58
Паралельное выполнение одной и той-же функции Сеня AJAX и COMET 3 24.01.2009 20:59