Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Аккордеон не получается (https://javascript.ru/forum/events/64176-akkordeon-ne-poluchaetsya.html)

DivMan 24.07.2016 17:14

Аккордеон не получается
 
Я не знаю, что делать.

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

2 шага я сделал, а как найти submenu, я вообще не понимаю

http://plnkr.co/edit/tfZdrlFUGhSdFKzRfTNG?p=preview

рони 24.07.2016 17:18

Цитата:

Сообщение от DivMan
найти его контейнер и в этом контейнере найти submenu

что значит найти?

DivMan 24.07.2016 17:26

найти контейнер у class="item" и в этом контейнере найти submenu

DivMan 24.07.2016 17:31

Вот так получилось
Теперь надо научится, что бы они автоматически закрывались.
Можете мне подсказать в какую сторону думать? Только не делайте готовое решение.

http://plnkr.co/edit/NYDHCCCaAPz39WAleF1J?p=preview

рони 24.07.2016 17:52

Цитата:

Сообщение от DivMan
что бы они автоматически закрывались.

в каком случае?

DivMan 24.07.2016 17:55

если открыть пункт, то он открывается, а если открыть другой пункт, то предыдущий сам закрывался.

рони 24.07.2016 18:10

DivMan,
250 открывашек на форуме обязательно нужна своя? сохранить открытый элемент в переменную -- в клике проверить если в переменной что-то и это что-то != новому то переменная classList.add(none)

DivMan 24.07.2016 19:09

не получается http://plnkr.co/edit/D6k0EPdRkGPlEYyFROO0?p=preview

рони 24.07.2016 21:10

Открывашка 259
 
DivMan,
<!DOCTYPE HTML>
<html>

<head>
  <style>
  .none{display: none;}
  </style>
  <meta charset="utf-8">
</head>

<body>

  <ul class="mainMenu">

    <li class="item">
      <div class="item_title" >Основы языка и как на нём говорить правильно</div>
      <ul class="submenu none">
          <li>Лексическая структура</li>
          <li>Типы данных, значения и переменные</li>
          <li>Выражения и операторы инструкции</li>

      </ul>
    </li>
    <li class="item">
      <div class="item_title" >Функции</div>
      <ul class="submenu none">
          <li>Лексическая структура</li>
          <li>Типы данных, значения и переменные</li>
          <li>Выражения и операторы инструкции</li>

      </ul>
    </li>
    <li class="item">
      <div class="item_title" >Обработка ошибок и отладка</div>
      <ul class="submenu none">
          <li>Лексическая структура</li>
          <li>Типы данных, значения и переменные</li>
          <li>Выражения и операторы инструкции</li>

      </ul>
    </li>
    <li class="item">
      <div class="item_title">Объекты и массивы</div>
      <ul class="submenu none">
          <li>Лексическая структура</li>
          <li>Типы данных, значения и переменные</li>
          <li>Выражения и операторы инструкции</li>

      </ul>
    </li>
    <li class="item">
      <div class="item_title">События</div>
      <ul class="submenu none">
          <li>Лексическая структура</li>
          <li>Типы данных, значения и переменные</li>
          <li>Выражения и операторы инструкции</li>

      </ul>
    </li>
  </ul>
  <script>
window.addEventListener("DOMContentLoaded", function() {
    var items = document.querySelectorAll(".item"),
        temp;
    [].forEach.call(items, function(item) {
        var submenu = item.querySelector(".submenu");
        var itemTitle = item.querySelector(".item_title");
        itemTitle.addEventListener("click", function(e) {
            temp && temp != submenu && temp.classList.add("none");
            submenu.classList.toggle("none");
            temp = submenu
        })
    })
});
  </script>

</body>

</html>

DivMan 24.07.2016 21:27

сложно


Часовой пояс GMT +3, время: 09:12.