jun_dev
@jun_dev
Frontend-developer

Как суммировать значения value в select option?

Задача: вывести значение value в класс sum

<select class="select">
	<option class="option" value="1">Пункт 1</option>
	<option class="option" value="2">Пункт 2</option>
	<!-- option может быть больше -->
</select>

<select class="select">
	<option class="option" value="1">Пункт 1</option>
	<option class="option" value="2">Пункт 2</option>
	<!-- option может быть больше -->
</select>

<div class="sum"></div>

5e2095c9e4699546946093.png
  • Вопрос задан
  • 188 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
По наличию какого класса будем опознавать элементы, которые должны быть подвергнуты суммированию; куда надо записывать сумму; и как эту сумму посчитать:

const className = 'select';
const sumEl = document.querySelector('.sum');
const sum = elements =>
  Array.prototype.reduce.call(
    elements,
    (acc, n) => acc + (+n.value || 0),
    0
  );

Делегирование, назначаем обработчик события change один раз:

const updateSum = () => sumEl.textContent = sum(document.getElementsByClassName(className));
document.addEventListener('change', e => e.target.classList.contains(className) && updateSum());
updateSum();

Или, назначаем обработчик каждому элементу индивидуально:

const selects = document.querySelectorAll(`.${className}`);
const updateSum = () => sumEl.innerText = sum(selects);
selects.forEach(n => n.addEventListener('change', updateSum));
updateSum();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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