1 回答
TA贡献1862条经验 获得超6个赞
有几点:a)document.getElementsByName("")返回一个 NodeList 元素集合,因此您无法像这样获取每个输入的值,您必须在 for 循环内获取它们;b) 然后您还需要在解析之前获取unitPrice[i]循环内每个值的值,c) 每次迭代后应重置总数,因此可以将其放在循环内。见下文:
function calculate() {
var Quantity = document.getElementsByName("Quantity");
var unitPrice = document.getElementsByName("unitPrice");
for (var i = 0; i < Quantity.length; i++) {
if (!Quantity[i].value) continue; // prevent NaN
let total = parseInt(Quantity[i].value) * parseInt(unitPrice[i].value);
document.getElementsByName("subtotal")[i].value = total;
}
}
<table>
<tr>
<td>
<input onblur="calculate()" name="Quantity" size="2" />
<input name="unitPrice" value="5" size="2" />
<input name="subtotal" size="2" />
</td>
</tr>
<tr>
<td>
<input onblur="calculate()" name="Quantity" size="2" />
<input name="unitPrice" value="5" size="2" />
<input name="subtotal" size="2" />
</td>
</tr>
</table>
为了避免得到NaN
没有任何值的结果,您可以添加if (!Quantity[i].value) continue;
为 for 循环中的第一行,这应该可以防止它。
- 1 回答
- 0 关注
- 75 浏览
添加回答
举报