Показать сообщение отдельно
  #4 (permalink)  
Старый 24.07.2011, 20:47
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

тут переписанный скрипт, с комментами. html я не трогал, так что именно из-за этого так реализовано. и не использовал getElementsByClassName. поддержка, знаете ли.

вот копия того же скрипта
var i = document.getElementsByTagName("div"),
    a = i.length,
    img,
    mouseoverDivCateg;
    

// назначаем обработчики.
while( a-- ) if ( i[a].className === 'categimg' ) {
    
    // img - картинка внутри div с классом categimg.
    img = i[a].getElementsByTagName('img')[0];
    
    img.onmouseover = find_sp;
    img.onmouseout = hide_sp;
    
}

function find_sp(e) {
    var parent, currElem = e ? e.target : event.srcElement;
    
    // ищем li , с которой начинается текущая категория.
    while( currElem.tagName.toLowerCase() !== 'li' ) currElem = currElem.parentNode;
    

    // ищем div с классом sp, который относится  к текущей категории
    var div = currElem.getElementsByTagName("div"),i = div.length;
    while( i-- ) if (div[i].className === "sp") break;
        div = div[i];

    div.style.visibility = "visible";
    
    // сохраняем этот дивчик, чтобы потом не искать
    mouseoverDivCateg = div;
    
}

function hide_sp() { 
    // скрываем сохраненный див
    mouseoverDivCateg.style.visibility= "hidden";
}

Последний раз редактировалось melky, 24.07.2011 в 21:41.
Ответить с цитированием