Не работает выпадающее меню js

'use strict';
// js
const list = document.querySelector('.header__list'),
      items = document.querySelectorAll('.header__items'),
      item = document.querySelectorAll('.header__item');
      

        function showItems(i) {
            item[i].classList.toggle('show');
               };
          
         
         list.addEventListener('click', () => {
            const target = event.target;
            if(target && target.classList.contains('header__items')) {
                item.forEach((elem, i) => {
                    if(elem == target) {
                      showItems(i);
                    }
                });
          }
         });

//html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <header>
        <nav class="header__nav">
            <ul class="header__list">
                <li class="header__items">Contacts
                    <div class="header__item">
                       <a  href="">1</a>
                        <a  href="">2</a>
                        <a  href="">3</a>
                        <a  href="">4</a>
                    </div>
                </li>
                <li class="header__items">About
                    <div class="header__item">
                       <a  href=""> 1</a>
                       <a  href=""> 2</a>
                       <a  href=""> 3</a>
                       <a  href=""> 4</a>
                    </div>
                </li>
                <li class="header__items">Team
                    <div class="header__item">
                       <a  href="">1</a>
                       <a  href="">2</a>
                       <a  href="">3</a>
                       <a  href="">4</a>            
                    </div>
                </li>
                <li class="header__items">Product
                    <div class="header__item">
                        <a  href="">1</a>
                        <a  href="">2</a>
                        <a  href="">3</a>
                        <a  href="">4</a>                       
                    </div>
                </li>
            </ul>
        </nav>
    </header>
    <script src= "js/script.js"></script>
</body>
</html>

//css 

.header__item {
    display: none;

} 

.header__item.show {
    display: block;
}

Ответы (1 шт):

Автор решения: Sjeurt

Тебе нужно итерировать items, а не item. items.forEach вместо item.forEach

const list = document.querySelector('.header__list'),
  items = document.querySelectorAll('.header__items'),
  item = document.querySelectorAll('.header__item');

function showItems(i) {
  item[i].classList.toggle('show');
}

list.addEventListener('click', () => {
  const target = event.target;
  if (target && target.classList.contains('header__items')) {
    items.forEach((elem, i) => {
      if (elem == target) {
        showItems(i);
      }
    });
  }
});
.header__item {
    display: none;
}
.header__item.show {
    display: block;
}
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <header>
      <nav class="header__nav">
        <ul class="header__list">
          <li class="header__items">
            Contacts
            <div class="header__item">
              <a href="">1</a>
              <a href="">2</a>
              <a href="">3</a>
              <a href="">4</a>
            </div>
          </li>
          <li class="header__items">
            About
            <div class="header__item">
              <a href=""> 1</a>
              <a href=""> 2</a>
              <a href=""> 3</a>
              <a href=""> 4</a>
            </div>
          </li>
          <li class="header__items">
            Team
            <div class="header__item">
              <a href="">1</a>
              <a href="">2</a>
              <a href="">3</a>
              <a href="">4</a>
            </div>
          </li>
          <li class="header__items">
            Product
            <div class="header__item">
              <a href="">1</a>
              <a href="">2</a>
              <a href="">3</a>
              <a href="">4</a>
            </div>
          </li>
        </ul>
      </nav>
    </header>
  </body>
</html>

→ Ссылка