добавление значения каждой строки с использованием each () в jQuery - PullRequest
0 голосов
/ 23 октября 2018

Я достиг сохранения данных в этом формате. Это показывает общую стоимость каждой категории (напр., ЕДА, ОДЕЖДА).

var `obj` = {}; `obj` = {FOOD: 1000, CLOTHES: 2000}

Значение должно быть перезаписано после нового ввода.Например, когда выбран «FOOD» и добавлено значение «500», obj следует обновить до obj = {FOOD: 1500, CLOTHES: 2000}.

Однако значение в obj постоянно добавляет значениякоторые уже были рассчитаны.Я хочу, чтобы к общей сумме каждой категории добавлялись только новые значения.

var obj = {};
$('.singleRow').each(function(rowIndex, row) {
  var key = $(row).find('select').val();
  if (!obj[key]) {
    obj[key] = 0;
    obj[key] += $(row).find('.cost').val() * 1;
  } else {
    obj[key] += $(row).find('.cost').val() * 1;
  }
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="wrapper">
  <div id="0" class="singleRow" style="clear: both;">
    <span id="add-row" class="glyphicon glyphicon-plus"></span>
    <input class="tableForSpreadsheet" type="text" id="0:0">
    <input class="tableForSpreadsheet" type="text" id="0:1">
    <select class="tableForSpreadsheet form-control" id="0:2">
      <option selected="selected">FOOD</option>
      <option>CLOTHES</option>
    </select>
    <input class="tableForSpreadsheet cost" type="text" id="0:3">
  </div>
</div>

Поскольку я использую each(), расчет общей стоимости всегда начинается с первой строки.Однако я хочу, чтобы каждое значение добавлялось только один раз.Как я могу исправить свой код для достижения этой цели?

1 Ответ

0 голосов
/ 23 октября 2018

Должно быть место, где вы запускаете фрагмент кода для вычисления значений и обновления obj.Также может быть другое место, где пользователи могут добавлять новые строки и т. Д.

Мне на ум приходят две вещи:

  1. Вы можете рассчитать всю еду ивещи с нуля.Поэтому очистите объект перед выполнением итерации.
  2. Вы можете добавлять прослушиватели событий в каждую строку независимо и обновлять obj соответственно.После обновления вы должны удалить его прослушиватель событий, чтобы не связываться с данными.В противном случае вам нужно запомнить предыдущее значение и выполнить немного более сложные вычисления, например удалить предыдущее значение из obj и добавить новое.
...