@WITT

Как я могу получить сумму двух столбцов только в отмеченных строках таблицы?

Я вообще не разбираюсь в javascript, изучаю по мере необходимости и мне нужна помощь. Мне нужно суммировать значения определенных столбцов таблицы, строки которых отмечены флажком. Например: я отмечаю флажок в двух строках таблицы.и ячейки 3,4 и 5 столбцов суммируются и отображаются где-нибудь на странице

Теперь мне удалось найти фрагмент кода, который суммирует "value", отмеченных флажков в форме и отображает его на странице. Нужна помощь в той части которая получает "value" инпута, мне нужно как-то заменить её на ту что будет получать числа из ячеек таблицы и суммировать их, к сожалению моих навыков более чем недостаточно

Вот моя таблица
<form action="" method="post" id="out_form">
            <input type="hidden" name="next" value="{{next}}"/>
            <button type="submit">Check</button>
            <span id="checked-sum">0</span>
            <span id="checked-count">0</span>
            {%csrf_token%}
            <div class="table-view__container">
                <table class="table-view__table">
                    <tbody class="table-view__body">
                        {% for out in filter.qs %}
                        <tr>
                            <td>
                                <label class="custom_Label">
                                    <input type="checkbox" name="checked" value="{{ out.id }}">
                                    <span class="checkmark"></span>
                                </label>
                            </td>
                            <td>{{out.date|date:"d(D).m.Y"}}</td>
                            <td>{{out.ts}}</td>
                            <td>{{out.pl}}</td>
                            <td>{{out.rem}}</td>
                            <td>{{out.comment}}</td>
                        </tr>
                        {% endfor %}
                    </tbody>
                </table>
            </div>
        </form>


Вот Js
<form action="" method="post" id="out_form">
            <input type="hidden" name="next" value="{{next}}"/>
            <button type="submit">Check</button>
            <span id="checked-sum">0</span>
            <span id="checked-count">0</span>
            {%csrf_token%}
            <div class="table-view__container">
                <table class="table-view__table">
                    <tbody class="table-view__body">
                        {% for out in filter.qs %}
                        <tr>
                            <td>
                                <label class="custom_Label">
                                    <input type="checkbox" name="checked" value="{{ out.id }}">
                                    <span class="checkmark"></span>
                                </label>
                            </td>
                            <td>{{out.date|date:"d(D).m.Y"}}</td>
                            <td>{{out.ts}}</td>
                            <td>{{out.pl}}</td>
                            <td>{{out.rem}}</td>
                            <td>{{out.comment}}</td>
                        </tr>
                        {% endfor %}
                    </tbody>
                </table>
            </div>
        </form>


Сумма этих столбцов должна получится
...
<td>{{out.ts}}</td>
<td>{{out.pl}}</td>
<td>{{out.rem}}</td>
...


Обновлено
Мне получилось выводить суму при активном чекбоксе, но только первой строки:
var
    $form = $("#out_form"),
    $table = $(".table-view"),
  $allCheckboxes = $("input:checkbox", $form),
  $sumOut = $("#checked-sum"),
  $countOut = $("#checked-count");
  
$allCheckboxes.change(function() {
	var
  	sum = 0,
    count = 0;
	$allCheckboxes.each(function(index, el) {
  	var 
    	$el = $(el),
    	val;
  	if ($el.is(":checked")) {
    	count++;
        $form.each(function () {
            var val1 = parseInt(document.querySelector(".ts", this).innerHTML,10);
            var val2 = parseInt(document.querySelector(".pl", this).innerHTML,10);
            var val3 = parseInt(document.querySelector(".rem", this).innerHTML,10);
            var total = (val1 * 1) + (val2 * 1) + (val3 * 1);
            sum += total;
            });
      if (!isNaN(val)) {
      	sum += total;
      }
    }
  });
  $sumOut.text(sum);
  $countOut.text(count);
});


Заранее спасибо)
  • Вопрос задан
  • 96 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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