【问题标题】:Recalculate total when table row is deleted删除表行时重新计算总计
【发布时间】:2025-12-31 14:35:15
【问题描述】:

这里是fiddle。我想要的是在删除一行时重新计算总数。我试过了,但它不起作用:

tot -= parseInt(table.rows[i].cells[1].innerHTML)
        table.deleteRow(i);
                rowCount--;
                i--;

这是我的代码:

<div class="lorr">
     <table id="myTable" border="1">
                                
     </table>
     <br />
</div>
<button id="deletes">Remove Checked</button>
<button type="button" onclick="displayResult()">Insert new row</button>    
<div id="total">
</div>
<script type="text/javascript">
    function displayResult()
    {
    var swap = '<input type="checkbox" class="escondeyou">';
    var table = document.getElementById("myTable");
    var rowCount = table.rows.length;
    var row = table.insertRow(rowCount);    
    var cell1 = row.insertCell(0);
    var cell2 = row.insertCell(1);
    cell1.innerHTML = swap+"NEW CELL1ffffffffffffffffff ui7iytuiui riuiui ri";
    cell2.innerHTML = "600";
    cell2.style.fontWeight="bold";
    cell2.style.wordBreak="keep-all";
    var tot = "RD$"+document.getElementById("total").innerHTML;
    // ******************** Important part ******************************
    var tot=0; 
        for(var i=0;i<=rowCount;i++){
        tot += parseInt(table.rows[i].cells[1].innerHTML);      
    }
    document.getElementById("total").innerHTML=tot;
    };


</script>
<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>

这里正在运行:http://jsfiddle.net/joansuriel/QmHdL/50/

【问题讨论】:

  • 我可以做一些类似“实时结果”的事情吗?
  • 把对这些值求和的代码放在一个单独的函数中。在插入和删除时调用它。

标签: javascript jquery row html-table delete-row


【解决方案1】:

这是您的点击处理程序在不过多更改代码的情况下应该做的事情。请注意,您可以重用 calcTotal 但要小心,我循环直到 i

$('#deletes').click(function(){

    $("table input[type='checkbox']:checked").parent().parent().remove();
    calcTotal(document.getElementById("myTable"), document.getElementById("total"));
});

function calcTotal(table, total){
    var tot = 0;
    for(var i=0;i<table.rows.length;i++){
        tot += parseInt(table.rows[i].cells[1].innerHTML);      
    }
    total.innerHTML=tot;
}

【讨论】:

    【解决方案2】:

    所以你有一个删除方法,用它做点什么。

    您的代码:

    $('#deletes').click(function(){
      $("table input[type='checkbox']:checked").parent().parent().remove();
    });
    

    改为:

    $('#deletes').click(function(){
      $("table input[type='checkbox']:checked").parent().parent().remove();
      var $table = document.getElementById("myTable");
      var total = 0;
      for (var i=0; i < $table.rows.length; i++) {
        var currentRow = $table.rows[i];
        total = total + parseInt(currentRow.cells[currentRow.cells.length - 1].innerHTML);
      }
    
      document.getElementById("total").innerHTML = total.toString();
    });
    

    如果您有任何问题,请给我留言。

    【讨论】:

    • 我也面临同样的问题,但这对我没有帮助。@Ares Ou function totamt(table,total){ var table = document.getElementById("stock"); var total = 0; for(var i=0;i&lt;table.rows.length;i++){ var currentRow = table.rows[i]; total = total + parseInt(currentRow.cells[currentRow.cells.length - 1].innerHTML); } document.getElementById('total').innerHTML = total.toString(); }