всё никак скрипт до ума не доведу.
попытался приспособить код к меню.
меню многоуровневое, с выпадающими списками которые ограничены высотой в 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);
работает лучше, но процент вычисляет с погрешностью.
кто по толковее подскажите как исправить
буду весьма признателен.