首页 > 解决方案 > 计算存储为数组的输入的和/差

问题描述

我有一个表格,表格中存储了大约 50 个类似元素。

对于每个项目,我有三个记录。

我已经在表格中获取了这样的元素:

    $table="SELECT * from hoa_list";
    $result=mysqli_query($db_conx,$table);
    $i=1;
    while($test = mysqli_fetch_array($result,MYSQLI_ASSOC))
        { ?>
    <tr>
    <td><input type="number" min="0" name="released[<?= $i ?>]" value="<?= $test['released']; ?>" onblur="recalculateSum();"></td>
    <td><input type="number" min="0" name="spent[<?= $i ?>]" value="<?= $test['spent']; ?>" onblur="recalculateSum();"></td>
    <td><input type="number" min="0" name="remain[<?= $i ?>]" value="<?= $test['remain']; ?>" readonly></td>
   </tr>
    <?php
    $i++;
           } ?>

对于每一行,我想计算第一个和第二个元素的差异,并在第三个只读输入中动态显示它。对于没有数组的元素,我使用了下面的代码

<script>
function recalculateSum()
{
    var num1 = parseInt(document.getElementById("released").value);
    var num2 = parseInt(document.getElementById("spent").value);
    total = document.getElementById("remain").value = num1 + num2;
}
</script>

谁能帮我计算存储在表中的元素的差异,因为不可能对每个元素进行计算,因为有超过 50 行。我可以遍历每个第一个和第二个元素的任何代码计算其差异然后移动到下一行

标签: javascriptphpmysql

解决方案


您可以简单地将函数转换为循环。

function recalculateSum(count) {
  for (let i = 0; i < count; i++) {
    var num1 = parseInt(document.getElementById(`released${i}`).value)
    var num2 = parseInt(document.getElementById(`spent${i}`).value)
    total = document.getElementById(`remain${i}`).value = num1 + num2
  }
}

将它传递给数组的大小,它将根据元素的数量进行计算。


推荐阅读