Показать сообщение отдельно
  #10 (permalink)  
Старый 12.06.2011, 00:20
Аспирант
Отправить личное сообщение для evgh Посмотреть профиль Найти все сообщения от evgh
 
Регистрация: 29.01.2011
Сообщений: 58

всё никак скрипт до ума не доведу.
попытался приспособить код к меню.
меню многоуровневое, с выпадающими списками которые ограничены высотой в 200px
var sliding=false;

function up(t){
sliding=clearInterval(sliding);
sliding=setInterval(
						function()
						{
							if(t.scrollTop>0) t.scrollTop--; 
							else sliding=clearInterval(sliding); 
						}
					, 20);
}

function down(t){
var From=t.scrollTop+t.offsetHeight;
sliding=clearInterval(sliding);
sliding=setInterval(
						function()
						{
							if(From<t.scrollHeight) t.scrollTop++; 
							else sliding=clearInterval(sliding); 
						}
					, 20);
}

function gg(e,t){
var ee = e.target || e.srcElement;
var percent=t.offsetHeight/100;
percent=Math.floor((e.clientY-t.offsetParent.offsetTop)/percent);
if(percent<20) up(t); 
else if(percent>80) down(t);
}

function stop(){ sliding=clearInterval(sliding); }

window.onload = function(){

var start=document.getElementById('nav_v');
var height=start.getElementsByTagName('li')[0].offsetHeight;
var all=start.getElementsByTagName('ul');
	for(var i=0; i<all.length; i++)
	{
		if((all[i].childNodes.length * height) > 200)
		{
			all[i].style.overflow = 'hidden';
			all[i].onmouseout = stop;
			all[i].onmouseover=function(event){ gg(event || window.event, this); };
		}
	}
}

больше всего волнует функция gg(e,t) (хотя не против если и в других укажите на ошибки).
в прототипе "процент" (позицию курсора мышки относительно выпадающего списка) вычислял в при помощи
percent=Math.floor((e.clientY-t.offsetTop)/percent);

и всё бы ничего, но когда прикрутил к рабочему меню скрипт начал "козлить", долго думая и ища окольные пути додумал до
percent=Math.floor((e.clientY-t.offsetParent.offsetTop)/percent);

работает лучше, но процент вычисляет с погрешностью.

кто по толковее подскажите как исправить
буду весьма признателен.
Ответить с цитированием