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

Как изменить содержимое в кнопке при клике?

Добрый вечер, коллеги. Задача казалось бы простая, но что-то последнее время туплю. Есть три кнопки - 1, 2, 3. При клике на любую кнопку, содержимое кнопок должно меняться вот так - 2, 3, 1 и так по кругу. Если есть у кого догадки, подскажите пожалуйста.
  • Вопрос задан
  • 580 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 3
0xD34F
@0xD34F Куратор тега JavaScript
const buttonSelector = 'button';
const getButtons = () => document.querySelectorAll(buttonSelector);

Вариант раз - делегируем обработку кликов по кнопкам их общему предку, копируем разметку, слева направо:

document.addEventListener('click', ({ target: t }) => {
  if (t.closest(buttonSelector)) {
    const buttons = getButtons();
    const html = Array.from(buttons, n => n.innerHTML);
    for (const [ i, n ] of buttons.entries()) {
      n.innerHTML = html[~-(i || html.length)];
    }
  }
});

Вариант два - обработчик клика назначаем кнопкам, переносим вложенные узлы, справа налево:

const buttons = getButtons();
const onClick = () =>
  buttons.forEach(function(n, i, a) {
    n.append(...(++i < a.length ? a[i].childNodes : this));
  }, [...buttons[0].childNodes]);

buttons.forEach(n => n.addEventListener('click', onClick));
Ответ написан
Комментировать
Я скорее всего неправильно понял, но все же

Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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