Самозакрывающееся Меню В Виде Списка О_о

Тема в разделе "HTML, CSS, XML, JavaScript", создана пользователем Dimitar, 20 мар 2012.

  1. Dimitar

    Dimitar Гость

    Всем привет!
    помогите пожалуйста в решении следующей проблемы.
    на сайте есть меню в виде списка:
    Код (Text):
    <ul>
    <li><a href="../1/">1</a></li>
    <li><a href="#" onclick="ShowOrHide(this);">2</a>
    <ul>
    <li><a href="../2_1/">2_1</a></li>
    <li><a href="../2_2/">2_2</a></li>
    </ul>
    </li>
    <li><a href="#" onclick="ShowOrHide(this);">3</a>
    <ul>
    <li><a href="../3_1/">3_1</a></li>
    <li><a href="../3_2/">3_2</a></li>
    <li><a href="../3_3/">3_3</a></li>
    </ul>
    </li>
    </ul>
    подпункты списка изначально закрыты. при клике на главном пункте списка срабатывает функция ShowOrHide(this), которая открывает подпункты данного пункта списка. вот эта функция:
    Код (Text):
    function ShowOrHide(obj)
    {
    var ul = obj.parentNode.getElementsByTagName('ul')[0];
    ul.style.display = (ul.style.display!='block')?('block'):('none');
    }
    подскажите, как сделать так, чтобы при открытии одного пункта, все остальные пункты меню закрывались. т.е. кликнули на пункт 3, он открылся. а при клике на 2, не просто открывается 2 пункт, но и закрывается 3.
     
  2. -master-

    -master- Well-Known Member

    Регистрация:
    14 янв 2012
    Сообщения:
    629
    Симпатии:
    19
    цикл нужен, чтобы все закрыть, потом открыть нужную
     
  3. Dimitar

    Dimitar Гость

    если Вас не затруднит, напишите подробней...
     
  4. Dimitar

    Dimitar Гость

    вот, разобрался

    Код (Text):
    var visibleListElement = null;
    function ShowOrHide(obj) {
    if ( visibleListElement ) visibleListElement.style.display = 'none';
    var ul = obj.parentNode.getElementsByTagName('ul')[0];
    ul.style.display = (ul.style.display!='block')?('block'):('none');
    visibleListElement = ul.style.display=='block' && ul || null;
    return false;
    }
     
  5. -master-

    -master- Well-Known Member

    Регистрация:
    14 янв 2012
    Сообщения:
    629
    Симпатии:
    19
    var ul = obj.nextSibling;
     
Загрузка...

Поделиться этой страницей