@Loserver

Как объединить отрезок кода в одну функцию?

Есть код, в нем повторяется задание константы.
Во всем коде отличаются только номера в ID, таких новых ID - 20-30, если выполнять таким методом. то это еще 28 таких отрезков кода.
Как их объединить в одну функцию?

const checkbox = document.getElementById('link5')

checkbox.addEventListener('change', (event) => {
if (event.target.checked) {
document.getElementById('tab1').style.display = 'block';
} else {
document.getElementById('tab1').style.display = 'none';
}
})

const checkbox = document.getElementById('link6')

checkbox.addEventListener('change', (event) => {
if (event.target.checked) {
document.getElementById('tab2').style.display = 'block';
} else {
document.getElementById('tab2').style.display = 'none';
}
})
  • Вопрос задан
  • 51 просмотр
Решения вопроса 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
const checkbox2tabMap = {
  link5: 'tab1',
  link6: 'tab2'
  // ... продолжите сами
};
function onCheckboxChange(event) {
  const tab = document.getElementById(checkbox2tabMap[event.target.id]);
  if(!tab) { return; }
  tab.style.display = event.target.checked ? 'block' : 'none';
}
Object.keys(checkbox2tabMap).forEach(
  id => document.getElementById(id).addEventListener('change', onCheckboxChange)
);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@zkrvndm
Софт для автоматизации
Считать все нужные чекбоксы на странице через querySelectorAll, полученный массив обойти через цикл for и внутри цикла уже вешать обработчик addEventListenet на ваши чекбоксы.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
Brightdata Тель-Авив
от 5 500 до 6 500 $
Rocket Брянск
от 60 000 до 100 000 ₽
21 мая 2024, в 22:38
4000 руб./за проект
21 мая 2024, в 22:37
3000 руб./за проект
21 мая 2024, в 22:35
5000 руб./за проект