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

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

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

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

<div class = "block2">
<button>кнопка для блока 3</button>
</div>
  • Вопрос задан
  • 1247 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 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);
}));
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Я лично бы делал так )
https://codesandbox.io/s/romantic-jackson-u4lql

Готов ответить на вопросы
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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