frilanser
@frilanser

Как сложить числа из div?

Пример:
<div id="load_numAll-shet" style="display:none">
<div data="10" id="load_numAll" >10</div>
<div data="50" id="load_numAll" >50</div>
<div data="70" id="load_numAll" >70</div>
<div data="80" id="load_numAll" >80</div>
</div>
<div id="load_numAll-show"></div>


Как можно сложить все числа data и вывести в div сложенную сумму!.
  • Вопрос задан
  • 3703 просмотра
Решения вопроса 1
@OneFive
React.js <3
var items = document.getElementById('load_numAll-shet').innerText;
var sum = items.split('\n').reduce(function(a,b){return a*1+b*1});
document.getElementById('load_numAll-show').innerHTML = sum;
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
In4in
@In4in
°•× JavaScript Developer ^_^ ו°
1. Атрибута data, как такого, не существует, используйте data-* атрибуты.
2. Задавать нескольким элементом одинаковый id нельзя, существуют классы.
3. Для чего нужен лишний атрибут, если внутри блоков такое же значение?
4. Почитайте какие-нибудь книжки про валидную верстку.

<ul id="load_numAll-shet" style="display:none">
   <li data-n="10" class="load_numAll-li">10</li>
   <li data-n="50" class="load_numAll-li">50</li>
   <li data-n="70" class="load_numAll-li">70</li>
   <li data-n="80" class="load_numAll-li">80</li>
</ul>
<output id="load_numAll-show"></output>


var output = document.querySelector("#load_numAll-show"),
   lies = document.querySelectorAll(".load_numAll-li");

output.value = Array.prototype.reduce.call(
   lies, function(p, t){
      return p + (+t.dataset.n);
    }, 0
);
Ответ написан
nikolayshabalin
@nikolayshabalin
Автор профессиональных курсов в HTML Academy
В общем на Ваши ошибки Вам уже указали повторяться не буду. Мой вариант с Вашим кодом вот такой.

HTML
<div id="load_numAll-shet" style="display:none">
    <div data-num="10" id="load_numAll" >10</div>
    <div data-num="50" id="load_numAll" >50</div>
    <div data-num="70" id="load_numAll" >70</div>
    <div data-num="80" id="load_numAll" >80</div>
</div>
<div id="load_numAll-show"></div>


jQuery
var $showBox = $('#load_numAll-show');
var $numbers = $('#load_numAll-shet div');
var sum = 0;

$numbers.each(function() {
    sum += parseInt($(this).data('num'));
});

$showBox.text(sum);


Чуть иначе на JS
var $showBox = document.getElementById('load_numAll-show');
var $numbers = document.querySelectorAll('#load_numAll-shet div');
var sum = 0;

for(var i = 0; i < $numbers.length; i++) {
    sum += Number($numbers[i].dataset.num);
}

$showBox.innerText = sum;


Поиграться можно здесь
Ответ написан
Комментировать
@newimageru
А как сложить числа динамически? Не подскажете? Есть блок в inputami? выбранные передаются в #load_numAll-shet.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы