@D1ma5ta

Как понять по какому элементу в массиве кликнул пользователь?

Как понять, по какому элементу выпадающего списка кликнул пользователь? Как вывести id или что-то еще, что бы можно было задать действие, когда пользователь выбирает тот или иной элемент?
Я написал функцию, но при клике на элемент выводится Undefined

<div class="dropdown">
    <div class="select">
      <span class="selected">Выбрать звук</span>
      <div class="caret"></div>
    </div>
    <ul class="menu">
      <li>Sound 1</li>
      <li>Sound 2</li>
      <li>Sound 3</li>
      <li class="active">Sound 4</li>
      <li>Sound 5</li>
    </ul>
  </div>


// Клик по кнопке. Открыть/закрыть
dropdowns.forEach(dropdown  => {
  const select = dropdown.querySelector('.select');
  const caret = dropdown.querySelector('.caret');
  const menu = dropdown.querySelector('.menu');
  const options = dropdown.querySelectorAll('.menu li');
  const selected = dropdown.querySelector('.selected');

  select.addEventListener('click', () => {
    select.classList.toggle('select-clicked');
    caret.classList.toggle('caret-rotate');
    menu.classList.toggle('menu-open');
  })


// Выбор элемента списка. Запомнить выбранное значение. Закрыть дропдаун
options.forEach(option => {
  option.addEventListener('click', (event) => {
    event.stopPropagation();
    selected.innerText = option.innerText;
    select.classList.remove('select-clicked');
    caret.classList.remove('caret-rotate');
    menu.classList.remove('menu-open');

    options.forEach(option =>  {
      option.classList.remove('active');
    });
      option.classList.add('active');
  })
})
});


// Вот здесь не знаю как написать, что бы выводился элемент по которому кликнули. Сейчас выводится Undefined
optionsArray.forEach(function (item) {
  item.addEventListener('click', () => {
    console.log(item.eventTarget);
  })
})
  • Вопрос задан
  • 149 просмотров
Пригласить эксперта
Ответы на вопрос 3
noder_ss
@noder_ss
Линуксоид-энтузиаст и SQL разработчик
простой пример, если поймете:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
 <button class="btn">Нажата 1</button>
 <button class="btn">Нажата 2</button>
 <button class="btn">Нажата 3</button>
 <button class="btn">Нажата 4</button>
 <button class="btn">Нажата 5</button>
 <button class="btn">Нажата 6</button>
 <button class="btn">Нажата 7</button>
 <button class="btn">Нажата 8</button>
 <button class="btn">Нажата 9</button>
</body>
<script>
    let btns = Array.from(document.querySelectorAll('.btn'))
    btns.forEach(function(itm){
itm.onclick = function(){
    alert(itm.innerHTML)
}
    })
</script>
</html>
Ответ написан
Комментировать
sergiks
@sergiks Куратор тега JavaScript
♬♬
Пример:

В константу li попадает кликнутый элемент списка.
Ответ написан
Комментировать
@historydev Куратор тега JavaScript
Острая аллергия на анимешников
Продублирую ответ сюда:
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы