如何仅对列表中的选定行求和

时间:2018-05-04 21:21:41

标签: javascript python html django

我有一个带有一些项目的网格,我想从所选行中总结val_itemservico列。我的模板汇总了所有行。

当我点击“Calcular”按钮时,我想仅为所选行添加val_itemservico列。在这种情况下,我需要知道是否检查了ind_selecionado列。

那么,我该怎么做?

HTML:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>ORÇAMENTO</title>
</head>
<h2>ORÇAMENTO</h2>
<form class=" bd-form-20 " action="#" name="form-name" method="GET">
    {% csrf_token %}

    <label>Serviço:   </label>{{filter.form.servico}}
    <button type = "submit" >OK</button>
    <br><br>
</form>
<tbody>
          <div class=" bd-customhtml-29 bd-tagstyles bd-custom-table">
            <div class="bd-container-inner bd-content-element">
              <table id="table" border="1" rules="all" cellspacing="0" cellpadding="10"> <!--width="100%" border="0" cellspacing="0" cellpadding="2">-->
                <tr>
                    <th>Selecionar</th>
                    <th>ID Item Serviço</th>
                    <th>Item Serviço</th>
                    <th>Valor Serviço</th>
                    <th>Serviço</th>
                </tr>

                {% for item in response.object_list %}
                <tr>
                        <td> <input type="checkbox" id="item.ind_selecionado"></td>
                        <td>{{ item.id }}</td>
                        <td>{{ item.desc_itemservico }}</td>
                        <td>{{ item.val_itemservico }}</td>
                        <td>{{ item.servico_id}}</td>
                </tr>
                {% endfor %}

                {% if response.object_list %}
                    Total: {{ response.object_list|length }}
                {% endif %}
                <br><br>
              </table>

              <br><br>
              Valores:<br>
              {% for item in response.object_list %}
                {{item.val_itemservico}}<br>
              {% endfor %}

              <br><br>
              <span id="sumV"></span>
              <script>
                  var table = document.getElementById("table");
                  getSum();
                  function getSum()
                  {
                    var sumVal = 0;
                    for (var i = 1; i < table.rows.length; i++){
                        sumVal = sumVal + parseInt(table.rows[i].cells[3].innerHTML);

                    }
                    console.log("Sum: " + sumVal)
                  }
              </script>
              <br><br>
              <button onclick="getSum();">Calcular</button>
            </div>
          </div>
</tbody>
</html>

1 个答案:

答案 0 :(得分:1)

您必须测试循环内检查输入的值,以计算总和

for (var i = 1; i < table.rows.length; i++){
    sumVal = sumVal + parseInt(table.rows[i].cells[3].innerHTML);
}

应该被替换为:

for (var i = 1; i < table.rows.length; i++){
    if(table.rows[i].cells[1].childNodes[0].checked){
      sumVal = sumVal + parseInt(table.rows[i].cells[3].innerHTML);
    }
}