我有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)
}
}
感谢前进
答案 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”属性。