• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

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

  • Автор темы Dimitar
  • Дата начала
D

Dimitar

Всем привет!
помогите пожалуйста в решении следующей проблемы.
на сайте есть меню в виде списка:
Код:
<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), которая открывает подпункты данного пункта списка. вот эта функция:
Код:
function ShowOrHide(obj) 
{
var ul = obj.parentNode.getElementsByTagName('ul')[0];
ul.style.display = (ul.style.display!='block')?('block'):('none');
}
подскажите, как сделать так, чтобы при открытии одного пункта, все остальные пункты меню закрывались. т.е. кликнули на пункт 3, он открылся. а при клике на 2, не просто открывается 2 пункт, но и закрывается 3.
 
M

-master-

цикл нужен, чтобы все закрыть, потом открыть нужную
 
D

Dimitar

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

Код:
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;
}
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!