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));