Mashka-kakashka
@Mashka-kakashka
Версталь

Как правильно/красивее написать код js?

Есть абсолютно разные элементы (сердечко избранного, кнопка подписки и пр.). По клику у них добавляется один и тот же класс active (стили для каждого элемента этому классу прописаны разные).
По идее мне достаточно всего одной функции с toggle.
Как лучше?
  • Использовать onckick передавай туда класс элемента (только не пойму как это сделать onclick="toggleActive('follow-brand')" ?)
  • Добавить всем элементам одинаковый атрибут data и использовать eventListener и this?

Или есть ещё какое-то решение?
  • Вопрос задан
  • 199 просмотров
Решения вопроса 1
@Smirator
В JavaScript придерживаются идеи модульности. Вы создали десять условных функций в начале кода, а затем используете их по мере необходимости. Под вашу задачу на скорую руку набросал два варианта:

// Для одиночного элемента:
let div = document.getElementById('div');

function addClass(el, event, className){
    el.addEventListener(event, function(){
        el.classList.add(className);
    });
};

addClass(div, 'click', 'test'); //функцию вызываем в любом нужном месте. Передаем название переменной, событие и класс

// Для массива элементов:
let elClass = Array.from(document.querySelectorAll('.elClass'));
console.log(elClass);

 function adClassArr(targetArr, event, className) {
    targetArr.forEach(target => target.addEventListener(event, function(){
        target.classList.add(className);
    }));
}


adClassArr(elClass, 'click', 'test'); //функцию вызываем в любом нужном месте. Передаем название переменной, событие и класс
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
dollar
@dollar
Делай добро и бросай его в воду.
Самый оптимальный подход в большинстве случаев - использовать addEventListener() и делегирование событий. Это более гибкий и масштабируемый способ, который позволяет обрабатывать события более эффективно и поддерживает хорошую структуру кода.
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Как правило, установка класса не самоцель. Нажатие на кнопку избранного, подписки и т.п. выполняет запрос к серверу для выполнения соответствующего действия и класс ставится по результату этого действия. Поскольку запросы к серверу будут разными для разных действий, то и обработчики нажатий должны различаться.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы