Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.06.2015, 22:24
Кандидат Javascript-наук
Отправить личное сообщение для ligisayan Посмотреть профиль Найти все сообщения от ligisayan
 
Регистрация: 19.06.2015
Сообщений: 114

Не правильно подсчитывает сумму значений элементов
Приветствую. Есть товары, каждого наименования может быть любое количество (увеличивается динамически с помощью кнопок +/-), пытаюсь собрать общую сумму со всех элементов в виде "сумма руб.", причем вывести в 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>

Последний раз редактировалось ligisayan, 28.06.2015 в 16:24. Причина: подправил код и уточнил вопрос
Ответить с цитированием
  #2 (permalink)  
Старый 26.06.2015, 23:21
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

ligisayan, начни с html кода, зачем тэги <b>, зачем id, что за <li id="shopping-button"> одинокий с тремя уровнями вложенности, классы в кучу намешаны в перемешку с id, бред какой-то короче. Сделай нормальную html-разметку сначала потом посмотрим!
Ответить с цитированием
  #3 (permalink)  
Старый 27.06.2015, 10:15
Кандидат Javascript-наук
Отправить личное сообщение для ligisayan Посмотреть профиль Найти все сообщения от ligisayan
 
Регистрация: 19.06.2015
Сообщений: 114

Сообщение от Rise Посмотреть сообщение
ligisayan, начни с html кода, зачем тэги <b>, зачем id, что за <li id="shopping-button"> одинокий с тремя уровнями вложенности, классы в кучу намешаны в перемешку с id, бред какой-то короче. Сделай нормальную html-разметку сначала потом посмотрим!
Rise не вижу никакого бреда - рассположение элементов и уровень их вложенности ведь никоем образом существенно на код скрипта не повлияет? Как вы, надеюсь, догадались - html составлена из разных частей кода, значимых исключительно для данного примера
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить список элементов в localStorage? Бобр Общие вопросы Javascript 8 17.09.2013 14:32
Блокировка событий всех дочерних элементов moreo Элементы интерфейса 4 26.05.2012 23:58
Как достучаться до всех элементов формы ganzalik228 Events/DOM/Window 4 26.05.2012 18:10
Получить список ВСЕХ элементов DOM Почемучкин Events/DOM/Window 7 16.04.2012 11:33
Суммирование значений всех элементов div frolvict jQuery 1 11.07.2011 17:05