Chupachar
@Chupachar
front-end dev

Как по клику вывести именно те id, которые были кликнуты?

Всем привет, в задаче имеется родительский блок <div class="parent-block">...</div> имеющий в себе определенное количество дочерних блоков<div class="child-block">...</div>в свою очередь в каждом дочернем блоке находятся item с id. Задача заключается в том, что мне нужно получить только "кликнутые" id определенного родительского блока, например в первом блоке кликнул по кнопкам 1, 3, 5 должно вывести в консоль 1, 3 , 5, после во втором выбираем 2, 4 и выводится 2 и 4. Кнопка add all id собирает айдишки только со своего child-block. Я так полагаю, что это можно реализовать с помощью filter или же map, но не понимаю как выводить что то типа e.target.id, пока выводятся все имеющиеся id. Кнопки при клике закрасил просто для наглядности.

https://jsfiddle.net/j0zyusg8/2/

<div class="parent-block">
  <div class="child-block">
    <div class="item">
      <span class="elem" id="1">1</span>
      <button class="btn">id</button>
    </div>
    <div class="item">
      <span class="elem" id="2">2</span>
      <button class="btn">id</button>
    </div>
    <div class="item">
      <span class="elem" id="3">3</span>
      <button class="btn">id</button>
    </div>
    <div class="item">
      <span class="elem" id="4">4</span>
      <button class="btn">id</button>
    </div>
    <div class="item">
      <span class="elem" id="5">5</span>
      <button class="btn">id</button>
    </div>
    <button class="btn-all">add all id</button>
  </div>
  <div class="child-block">
    <div class="item">
      <span class="elem" id="1">1</span>
      <button class="btn">id</button>
    </div>
    <div class="item">
      <span class="elem" id="2">2</span>
      <button class="btn">id</button>
    </div>
    <div class="item">
      <span class="elem" id="3">3</span>
      <button class="btn">id</button>
    </div>
    <div class="item">
      <span class="elem" id="4">4</span>
      <button class="btn">id</button>
    </div>
    <div class="item">
      <span class="elem" id="5">5</span>
      <button class="btn">id</button>
    </div>
    <button class="btn-all">add all id</button>
  </div>
</div>


let elem = document.querySelectorAll('.elem')
let parentBlock = document.querySelector('.parent-block')
let item = document.querySelector('.item')
parentBlock.addEventListener('click', function(e) {
  if (e.target.classList.contains('btn-all')) {
    [...elem].map(item => console.log(item.id))
  }
  if (e.target.classList.contains('btn')) {
    e.target.style.background = 'red';
  }
})
  • Вопрос задан
  • 149 просмотров
Пригласить эксперта
Ответы на вопрос 1
noder_ss
@noder_ss
Линуксоид-энтузиаст и SQL разработчик
С айди у вас не получится, ведь это индивидуально для элемента. Если надо, могу сверстать тему с классами
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы
27 нояб. 2024, в 19:08
1500 руб./в час
27 нояб. 2024, в 18:19
2000 руб./за проект
27 нояб. 2024, в 17:41
2000 руб./за проект