leotoleo
@leotoleo
Верстаю на html css js

Как при нажатии на path из svg показать соответствующий ему div?

Я хочу, чтобы при нажатии на деталь машины (например, капот) открылся блок с категориями повреждений и стоимостью за ремонт именно этой детали (именно капота). Ну и соответственно, также с другими деталями.
Написал кусок кода, где проверяю элемент, по которому кликаю, на наличие нужного мне класса. Исходя из этого присваиваю класс и показываю нужный список с категориями ремонта.
И еще, как сделать, чтобы при клике на вторую деталь с первой детали убирать класс active?
  • Вопрос задан
  • 131 просмотр
Решения вопроса 1
leotoleo
@leotoleo Автор вопроса
Верстаю на html css js
Решил задачу таким кодом.

const tabs = document.getElementById('tabs');
const content = document.querySelectorAll('.priceHome__priceDetail');
const tabsEl = Array.from(document.querySelectorAll('.group-el'));

const changeClass = el => {
for (let i = 0; i < tabs.children.length; i++) {
tabs.children[i].classList.remove('active');
}
el.classList.add('active');
}

for (index = 0; index < tabsEl.length; index++) {
tabsEl[index].addEventListener('click', (e) => {
const currTab = e.target.dataset.btn;
changeClass(e.target);
for (let i = 0; i < content.length; i++) {
content[i].classList.remove('active');
if (content[i].dataset.content === currTab) {
content[i].classList.add('active');
}
}
})
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Я хочу, чтобы при нажатии на деталь машины (например, капот) открылся блок с категориями повреждений и стоимостью за ремонт именно этой детали (именно капота)

Если я правильно понял, то просто цена должна отличатся, если да, то для каждой запчасти создаешь атрибут data-price(Например) и уже в нем указывашь цену для каждой запчасти, а в js просто будешь перед открытием окна считывать цену с данного атрибута и менять ее в нужных местах.
как сделать, чтобы при клике на вторую деталь с первой детали убирать класс active?

Есть два варианта:
1. Можно взять родительский элемент и уже в нем попытся найти элемент с классом active, если null, то ничего не делать, а иначе убрать его, после добавить active на котором был клик.
2. Можно перед добавлением active для нужного элемента сначала всем элемнтам удалить данный класс.
Ответ написан
Ваш ответ на вопрос

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

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