1 回答

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊
有幾點(diǎn):a)document.getElementsByName("")返回一個(gè) NodeList 元素集合,因此您無(wú)法像這樣獲取每個(gè)輸入的值,您必須在 for 循環(huán)內(nèi)獲取它們;b) 然后您還需要在解析之前獲取unitPrice[i]循環(huán)內(nèi)每個(gè)值的值,c) 每次迭代后應(yīng)重置總數(shù),因此可以將其放在循環(huán)內(nèi)。見(jiàn)下文:
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
沒(méi)有任何值的結(jié)果,您可以添加if (!Quantity[i].value) continue;
為 for 循環(huán)中的第一行,這應(yīng)該可以防止它。
- 1 回答
- 0 關(guān)注
- 182 瀏覽
添加回答
舉報(bào)