@mijanj

Как заменить шесть «function» на одну?

У меня есть 6 однотипных функций, в них отличаются лишь названия, и ID изменяемых объектов.

Как можно вот это все заменить лишь одной функцией? Я пока что не сильно разбираюсь в JavaScript, но вроде как, можно как-то получить предыдущий элемент(хотя у меня он, не совсем предыдущий, вместо поиска элемента по ID.

Буду очень благодарен, за объяснение
  • Вопрос задан
  • 142 просмотра
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
Сделать функцию, принимающую input, находящую соответствующий input'у span и обновляющую его содержимое:

const updateValue = input =>
  input.previousElementSibling.querySelector('.p_value').innerText = input.value;

У input'ов вырезать инлайновые обработчики, добавить общий класс, например: class="xxx".

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

document.addEventListener('input', ({ target: t }) => {
  if (t.classList.contains('xxx')) {
    updateValue(t);
  }
});

Или назначить обработчик каждому input'у индивидуально:

document.querySelectorAll('.xxx').forEach(function(n) {
  n.addEventListener('input', this);
}, e => updateValue(e.target));
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
Поскольку и разметка повторяется, тут 6 одинаковых по устройству Компонентов.
Предлагаю сделать центром всего — Данные. Где и компоненты описаны и выбранные значения. В данных же хранить ссылки на элементы, в которые отрисовывать изменяющееся значение. И вообще держать текущее «состояние» игры.
Разметку создавать налету из данных в самом начале.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект