Задать вопрос
@MegaPuxapb

Посчитать сумму всех data attr с определённым классом?

Как посчитать сумму дата атрибутов ('data-price'), в элементах с классом in?
<div class="item" data-price="1">1</div>
	<div class="item" data-price="2">1</div>
	<div class="item in" data-price="3">1</div>
	<div class="item in" data-price="4">1</div>
  • Вопрос задан
  • 340 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
Да в лоб решайте, да и все
let sum = 0;
$('.item.in').each(function() {
	sum += parseInt($(this).data('price'));
});
alert(sum);
Ответ написан
0xD34F
@0xD34F Куратор тега JavaScript
О каких классах и data-атрибуте идёт речь:

const class1 = 'item';
const class2 = 'in';
const key = 'price';
const attr = `data-${key}`;

Как извлечь значение атрибута:

const getValue = el => +el.dataset[key];
// или
const getValue = el => parseFloat(el.getAttribute(attr));
// или
const getValue = el => Number(el.attributes[attr].value);

Извлекаем, складываем:

const sum = Array.prototype.reduce.call(
  document.querySelectorAll(`.${class1}.${class2}`),
  (acc, n) => acc + getValue(n),
  0
);

// или

let sum = 0;
for (const n of document.getElementsByClassName(class1)) {
  sum += getValue(n) * n.classList.contains(class2);
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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