@ligisayan

Почему не правильно подсчитывает сумму значений элементов?

Приветствую. Есть товары, каждого наименования может быть любое количество (увеличивается динамически с помощью кнопок +/-), пытаюсь собрать общую сумму со всех элементов в виде "сумма руб.", причем вывести в 2ух элементах. Проблема в том, что первоначально (при добавлении одного, двух, трех товаров) в summary все считает правильно, но если начинать увеличивать количество наименовании товаров с помощью кнопки + summary дописывает к итоговой сумме сумму предыдущего товара. Как это можно исправить?
var summary = 0; // при попадании нового товара в корзину происходит обнуление
$('.li').each(function() {

  var $this = $(this);
  var quantity = $this.find(".quantity").text().match(/\d+(?:\.\d+)?/g);
  var basePrice = "";
  for (var i = 1; i < quantity.length; i++) {
    basePrice += quantity[i];
  }
  var $input = $this.find(".input-text.qty.text");
  var max = +$input.attr("max");
  var min = +$input.attr("min");

  function updateValue(newValue) {
    var value = +newValue;
    newValue > max && (value = max);
    newValue < min && (value = min);
    var item = value * basePrice;
    console.log(item); //сумма одного элемента
    summary = summary + item;
    console.log(summary); //получаем сумму всех элементов
    $this.find(".amount").text(value * basePrice + " руб");
    $(".summary").text(summary + " руб");
    $("#shopping-button .amount").text(summary + " руб");
    $this.find(".quantity")[0].firstChild.data = value + " × ";
    $input.val(value);
  }

  $this.find(".plus").click(function() {
    updateValue(+$input.val() + 1);
    return false;
  });

  $this.find(".minus").click(function() {
    updateValue(+$input.val() - 1);
    return false;
  });

  $input.click(function() {
    updateValue($input.val());
    return false;
  });
  updateValue(quantity[0]);
});

<!-- Считаем сумму с каждого li-->
<div class="li">
  <div class="product-text">
    <span class="quantity">9 × <span class="amount">1.080.000 руб</span></span>
  </div>
  <a href="#" class="remove-item" title="Удалить эту позицию">remove</a>
  <div class="quantity buttons_added">
    <input type="number" step="1" min="1" max="100" id="num_count" name="quantity" value="1" title="Кол." class="input-text qty text" size="4">
    <input type="button" value="+1" id="button_plus" class="plus">
    <input type="button" value="-1" id="button_minus" class="minus">
  </div>
</div>
<!-- Получить здесь-->
<div class="fixed-bottom">
  <p>Итого..........<span class="summary"><b>416.000</b></span>
  </p>
</div>
<!-- и здесь-->
<li id="shopping-button">
  <a class="shopping-button" href="#">
    <b><span class="amount">1.080.000&nbsp;руб.</span></b>
  </a>
  <!--/ .shopping-button-->
</li>
  • Вопрос задан
  • 252 просмотра
Пригласить эксперта
Ответы на вопрос 1
scapp
@scapp
JS фрилансер
updateValue(quantity[0]);
}); <--- вот это откуда?
Ответ написан
Ваш ответ на вопрос

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

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