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

Как посчитать сумму во всех li?

Есть html документ:

<body>
    <ul id="list">
      <li>bushinr - 2216000</li>
      <li>Колян - 819717</li>
      <li>Esme - 605200</li>
      <li>DJдука - 583359</li>
      <li>Дуг Стея - 568290</li>
      <li>Аноним - 480003</li>
      <li>Лод - 423930</li>
      <li>Burning Man - 383877</li>
      <li>DieHard3r - 369479</li>
      <li>pyzh_wot - 354921</li>
      <li>Ченый Хамовник - 334506</li>
      <li>Киилл Ро - 300000</li>
      <li>Hotfallenangel - 280950</li>
      <li>БРО - 276400</li>
      <li>Greed - 274196</li>
      <li>геальт - 274111</li>
      <li>Ro3etkaTV - 269100</li>
      <li>st52 - 251826</li>
      <li>limb_lebowski - 251120</li>
      <li>ifate - 211319</li>
      <li>Иги Изи - 193062</li>
      <li>rusik23031989 - 189190</li>
      <li>niko - 185474</li>
      <li>MaxMomus - 185100</li>
      <li>mQ - 183000</li>
      <li>CapitanOrgazmo - 181122</li>
      ....
<ul>
</body>

Как с помощью js посчитать суммы, которые расположены за дефисом в li?
  • Вопрос задан
  • 347 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
0xD34F
@0xD34F Куратор тега JavaScript
Как получить элементы:

const elements = document.querySelector('#list').children;
// или
const elements = document.querySelectorAll('#list li');

Как из элемента извлечь значение:

const getVal = el => +el.textContent.split(' - ').pop();
// или
const getVal = el => parseInt(el.innerText.replace(/.*\D/, ''));
// или
const getVal = el => el.innerHTML.match(/\d+$/) | 0;

Как посчитать сумму:

const sum = Array.prototype.reduce.call(
  elements,
  (acc, n) => acc + getVal(n),
  0
);

// или

let sum = 0;
for (const n of elements) {
  sum += getVal(n);
}

// или

const sum = (function sum(i) {
  return elements[i] ? getVal(elements[i]) + sum(i + 1) : 0;
})(0);

// или

const sum = eval(Array.from(elements, getVal).join('+')) ?? 0;
Ответ написан
Комментировать
const elts = document.querySelectorAll("ul#list li");
let sum = 0;

elts.forEach(elt => {
	sum += Number(elt.innerHTML.split('-')[1]);
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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