Вопрос. В данном коде:
for(const tab of tabs) {
tab.addEventListener(`change`, () => {
if (tab.checked) {
user.classList.add(`main-navigation__list-item--active`);
} else if(!tab.checked) {
user.classList.remove(`main-navigation__list-item--active`);
}
})
}
почему при клике добавляется класс, а с предыдущего при этом не снимается? Это radio-buttons, событие change. По идее при клике на один, на предыдущем тоже должно срабатывать событие, но оно не срабатывает. Только на том, который кликнули. Else if не выполняется и класс остается на предыдущем табе
Событие на radio-button вызывается только когда выбранный элемент меняется. При чем только 1 раз для того элемента который стал выбранным.
let numOfChanges = 0;
const radioButtons = document.getElementsByName('radio');
for(let radio of radioButtons) {
radio.addEventListener('change', function() {
for(let radio of radioButtons) {
if(radio.checked) {
radio.classList.add('active');
} else {
radio.classList.remove('active');
}
}
numOfChanges++;
console.log(numOfChanges);
});
}
<input type="radio" name="radio" value="1">
<input type="radio" name="radio" value="1">
Сборка персонального компьютера от Artline: умный выбор для современных пользователей