如何在3个动态字段与另一个动态字段之间求和

时间:2018-12-03 01:26:55

标签: javascript

我有3个动态字段,我想将3个动态字段加到另一个动态字段中,我不知道如何显示结果,但是我已经尝试了pls help

这是我的动态字段

 cols += '<td><input type="text" style="width: 100px;" id="harga" name="harga[' + counter + ']" placeholder="Harga">  </td>';
 cols += '<td><input type="text" style="width: 50px;" id="qty" name="qty[' + counter + ']" placeholder="Qty" onkeyup="findTotal()">  </td>';
 cols += '<td><input type="text" style="width: 100px;" id="diskon" name="diskon[' + counter + ']" placeholder="Diskon">  </td>';
 cols += '<td><input type="text" id="total" name="total[' + counter + ']" placeholder="Total"></td>';

这是我的JavaScript

 function findTotal(){
        var sum = 0;
        var qty = document.querySelectorAll("input[name^='qty[']");
        var harga = document.querySelectorAll("input[name^='harga[']");
        var diskon = document.querySelectorAll("input[name^='diskon[']");
        for (var i = 0; i < qty.length; i++)
        {
            sum += parseFloat(
               ((diskon[i].value/100)*harga[i].value)*qty[i].value
            );
            //how to show result must be on total (Dynamic Name)
        }
    } 

感谢前进

1 个答案:

答案 0 :(得分:0)

您实际上在正确地求和,但没有适当地查询总输入字段来分配值。您的查询选择器正在传递Element引用,而不是调用document.getElementById(total [i])时的ID。

快速解决方案是您不需要重新查询total元素,因为您已经在total [i]中对其进行了引用,因此您可以这样做:

function findTotal(){
    ...
    for (var i = 0; i < qty.length; i++)
    {
        sum += parseFloat(
           harga[i].value*qty[i].value
        );
        total[i].value = sum;
    }
} 

在构建HTML时,您还应该考虑更改“ id”,因为它们在理想情况下是唯一的,并且您正在迭代。您可以遵循与分配“名称”属性的方式类似的方式,尽管说实话,您也可以不使用“ id”属性。如果要为每个元素分配样式,则最好使用“ class”属性。