Как добавить удаление классов на чистом JS? [дубликат]

392
16 мая 2017, 04:20

На данный вопрос уже ответили:

  • Как добавить класс при клике на чистом JS? 1 ответ
  • Как убрать активный класс с элемента при клике, если он уже имеет этот класс? 2 ответа

Есть вот такой вот JS-код:

var main = document.getElementsByClassName('intro__btn--main');
var bots = document.getElementsByClassName('intro__btn--bots');
var advertisement = document.getElementsByClassName('intro__btn--advertisement');
var par = document.getElementsByClassName('main');
// Добавляет класс main--main-bg к main
main[0].onclick = function () {
        par[0].classList.add("main--main-bg");
};
// Добавляет класс main--bots-bg к main
bots[0].onclick = function () {
        par[0].classList.add("main--bots-bg");
};
// Добавляет класс main--main-advertisement к main
advertisement[0].onclick = function () {
        par[0].classList.add("main--main-advertisement");
};

main[1].onclick = function () {
        par[0].classList.remove("main--advertisement-bg");
};
bots[1].onclick = function () {
        par[0].classList.remove("main--bots-bg");
};
advertisement[1].onclick = function () {
        par[0].classList.remove("main--advertisement-bg");
};

Сейчас он добавляет определенный класс при нажатии на ту или иную кнопку и его же удаляет лишь при нажатии на эту же кнопку, с помощью которой был добавлен. Как сделать, чтобы при добавлении класса удалялись ненужные? Т.е. чтобы был лишь основной класс - main и добавлялся модификатор, например, main--main-bg. Код на кодпене.

READ ALSO
Связать селекты между собой

Связать селекты между собой

Использую DLEХочу прикрутить к нему одну штуку

360
Метод split() выводит undefined

Метод split() выводит undefined

Разбивая строку на массив методом split() через разделитель (", ") получаю alert-ы с ожидаемыми результатами, после этого получаю alert-ы с сообщением...

281
Декодирование GET параметров

Декодирование GET параметров

Возможно, банальный вопрос, тем не менее напишу здесь, потому что искал в сети решение, однако решения не подошли

350