За последние 24 часа нас посетили 18705 программистов и 1703 робота. Сейчас ищут 636 программистов ...

Вопрос о меню?

Тема в разделе "JavaScript и AJAX", создана пользователем Lutheme, 14 окт 2011.

  1. Lutheme

    Lutheme Активный пользователь

    С нами с:
    14 окт 2011
    Сообщения:
    4
    Симпатии:
    0
    Есть меню, которое в принципе работает нормально.
    Когда мы кликаем на пункт меню "Menu 1",
    открываются его подменю
    sub menu 1
    sub menu 2
    sub menu 3
    Если дальше открыть меню "Menu 2", откроется уже его подменю,
    однако, подменю 1-го меню тоже будет открыто...

    Как сделать, чтобы при клике на другое меню, подменю 1-го меню скрывалось?

    HTML:
    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru"><head>
    3. <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    4. <title>Вертикальное раскрывающиеся menu</title>
    5.  
    6. <script type="text/javascript">
    7. function allClose(){
    8.     var list = document.getElementById("menu").getElementsByTagName("ul");
    9.     for(var i=0;i<list.length;i++){
    10.        list[i].style.display = "none";
    11.    }
    12. }
    13. function openMenu(node){
    14.    var subMenu = node.parentNode.getElementsByTagName("ul")[0];
    15.    subMenu.style.display == "none" ? subMenu.style.display = "block" : subMenu.style.display = "none";
    16. }
    17.  
    18. <style type="text/css">
    19. #menu{background:#81A192;width:200px;list-style-type:none;padding:0;margin:0}
    20. #menu li{border-bottom:1px solid #fff;padding:3px}
    21. #menu li a{color:#fff;font-family:verdana,arial,sans-serif;text-decoration:none}
    22. #menu li ul{border-top:1px solid #fff;padding:0;margin:0;list-style-type:square;list-style-position:inside}
    23. #menu li ul li{border:0;list-style-type:square;color:#fff;list-style-position:inside}
    24.  
    25. </head>
    26.  
    27. <body onload="allClose()">
    28.  
    29. <div>
    30.  
    31. <ul id="menu">
    32.   <li><a href="#" onclick="openMenu(this);return false">menu 1</a>
    33.       <ul style="display: none;">
    34.           <li><a href="#">sub menu 1</a></li>
    35.           <li><a href="#">sub menu 2</a></li>
    36.           <li><a href="#">sub menu 3</a></li>
    37.           <li><a href="#">sub menu 4</a></li>
    38.           <li><a href="#">sub menu 5</a></li>
    39.           <li><a href="#">sub menu 6</a></li>
    40.           <li><a href="#">sub menu 7</a></li>
    41.       </ul>
    42.   </li>
    43.   <li><a href="#" onclick="openMenu(this);return false">menu 2</a>
    44.       <ul style="display: none;">
    45.           <li><a href="#">sub menu 1</a></li>
    46.           <li><a href="#">sub menu 2</a></li>
    47.           <li><a href="#">sub menu 3</a></li>
    48.           <li><a href="#">sub menu 4</a></li>
    49.           <li><a href="#">sub menu 5</a></li>
    50.           <li><a href="#">sub menu 6</a></li>
    51.           <li><a href="#">sub menu 7</a></li>
    52.      </ul>
    53.   </li>
    54.   <li><a href="#" onclick="openMenu(this);return false">menu 3</a>
    55.      <ul style="display: none;">
    56.           <li><a href="#">sub menu 1</a></li>
    57.           <li><a href="#">sub menu 2</a></li>
    58.           <li><a href="#">sub menu 3</a></li>
    59.           <li><a href="#">sub menu 4</a></li>
    60.           <li><a href="#">sub menu 5</a></li>
    61.           <li><a href="#">sub menu 6</a></li>
    62.           <li><a href="#">sub menu 7</a></li>
    63.     </ul>
    64.   </li>
    65.  
    66. </ul>
    67. </div>
    68.  
    69. </body></html>
    Один человек мне сказал, что нужно пробежаться циклом each() по всем пунктам меню при нажатии. Если айди совпадает то открыть, если нет то закрыть.

    К сожалению, я только приступил к изучению java script и пока не совсем понимаю как это реализовать.

    Нужна помощь от Вас.
     
  2. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    у тебя уже есть функция которая закрывает все пункты меню. Просто вызывай ее перед тем как открывать нужное.
     
  3. Lutheme

    Lutheme Активный пользователь

    С нами с:
    14 окт 2011
    Сообщения:
    4
    Симпатии:
    0
    Не могли бы Вы объяснить это поподробнее.
     
  4. Lutheme

    Lutheme Активный пользователь

    С нами с:
    14 окт 2011
    Сообщения:
    4
    Симпатии:
    0
  5. Lutheme

    Lutheme Активный пользователь

    С нами с:
    14 окт 2011
    Сообщения:
    4
    Симпатии:
    0
    Вопрос решен.