Как сделать раскрытие подменю js?

Для реализации функциональности раскрытия подменю в JavaScript, можно воспользоваться различными подходами и методами. Вот один из примеров, который позволит вам создать раскрывающееся подменю:

1. Структура HTML:

<nav>
  <ul>
    <li><a href="#">Главная</a></li>
    <li><a href="#">О компании</a>
      <ul class="submenu">
        <li><a href="#">История</a></li>
        <li><a href="#">Ценности</a></li>
        <li><a href="#">Команда</a></li>
      </ul>
    </li>
    <li><a href="#">Услуги</a></li>
    <li><a href="#">Контакты</a></li>
  </ul>
</nav>

2. CSS стилизация:

nav ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

nav ul li {
  display: inline-block;
  position: relative;
}

nav ul li a {
  display: block;
  padding: 10px;
  text-decoration: none;
  color: #000;
}

nav ul li:hover > .submenu {
  display: block;
}

nav ul .submenu {
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
  background-color: #fff;
  border: 1px solid #ccc;
}

nav ul .submenu li {
  display: block;
}

3. JavaScript код:

document.addEventListener("DOMContentLoaded", function() {
  var submenus = document.querySelectorAll(".submenu");

  for (var i = 0; i < submenus.length; i++) {
    submenus[i].parentNode.addEventListener("mouseover", function() {
      this.querySelector(".submenu").style.display = "block";
    });

    submenus[i].parentNode.addEventListener("mouseout", function() {
      this.querySelector(".submenu").style.display = "none";
    });
  }
});

В данном коде мы сначала получаем список всех элементов с классом "submenu" и затем добавляем к ним обработчики событий. При наведении мыши на элемент родителя, мы изменяем стиль дочернего элемента с классом "submenu", устанавливая его свойство "display" в значение "block", и при уходе курсора мыши, стиль возвращается к значению "none", скрывая подменю.

Помимо этой реализации, есть и другие подходы, которые могут использоваться для создания раскрывающегося подменю в JavaScript. Все зависит от ваших потребностей и требований.