Задать вопрос
@legatobrown

Как при нажатии на кнопку перемещать элемент в этот блок и удалять из предыдущего, при этом чтобы не было двух одинаковых элементов?

<div class="block">
  <button>кнопка для блока 1</button>
  <span>Элемент, который должен будет перемещаться в блок где была нажата кнопка</span>
</div>

<div class="block">
  <button>кнопка для блока 2</button>
</div>

<div class="block">
  <button>кнопка для блока 3</button>
</div>
  • Вопрос задан
  • 1253 просмотра
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
О каких блоках и кнопках идёт речь, кого надо перемещать:

const blockSelector = '.block';
const buttonSelector = `${blockSelector} button`;
const el = document.querySelector(`${blockSelector} span`);

Слушать клики можно непосредственно на кнопках:

document.querySelectorAll(buttonSelector).forEach(function(n) {
  n.addEventListener('click', this);
}, ({ currentTarget: t }) => {
  while (!(t = t.parentNode).matches(blockSelector)) ;
  t.appendChild(el); // или t.insertBefore(el, null)
});

Или, на каком-нибудь из их общих предков:

document.addEventListener('click', e => e
  .target
  .closest(buttonSelector)
  ?.closest(blockSelector)
  .append(el) // или .insertAdjacentElement('beforeend', el)
);
Ответ написан
Комментировать
@StockholmSyndrome
const span = document.querySelector('span'); 
document.querySelectorAll('button').forEach((btn) => btn.addEventListener('click', function() {
  this.parentNode.appendChild(span);
}));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы