使用java脚本动态乘以2个单元格并在第三个单元格中显示结果

我从数据库中提取记录,将它们显示在带有表单输入字段的表行中。这意味着将会有多行,如下面的示例 html 代码所示。我只想使用 JavaScript。这个想法是,当用户输入数量时,它会乘以单价,结果显示在小计字段中。我不是 JS 开发人员,我搜索并找到了下面的代码,它接近我需要的代码。如果有人可以提出一些建议以使该代码正常工作,我将不胜感激。


  <SCRIPT language="JavaScript">

<!--

 function calculate() {

    var Quantity = document.getElementsByName("Quantity").value;

    var unitPrice = document.getElementsByName("unitPrice").value;

    var total = 0;

    for (var i = 0; i < Quantity.length; i++) {


            total += parseInt(Quantity[i].value) * parseInt(unitPrice[i]);


    }

 document.getElementsByName("subtotal").value = total;


}


 </SCRIPT> 


<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>


互换的青春
浏览 89回答 1
1回答

阿波罗的战车

有几点:a)document.getElementsByName("")返回一个 NodeList 元素集合,因此您无法像这样获取每个输入的值,您必须在 for 循环内获取它们;b) 然后您还需要在解析之前获取unitPrice[i]循环内每个值的值,c) 每次迭代后应重置总数,因此可以将其放在循环内。见下文:function calculate() {&nbsp; var Quantity = document.getElementsByName("Quantity");&nbsp; var unitPrice = document.getElementsByName("unitPrice");&nbsp; for (var i = 0; i < Quantity.length; i++) {&nbsp; &nbsp; if (!Quantity[i].value) continue; // prevent NaN&nbsp; &nbsp; let total = parseInt(Quantity[i].value) * parseInt(unitPrice[i].value);&nbsp; &nbsp; document.getElementsByName("subtotal")[i].value = total;&nbsp; }}<table>&nbsp; <tr>&nbsp; &nbsp; <td>&nbsp; &nbsp; &nbsp; <input onblur="calculate()" name="Quantity" size="2" />&nbsp; &nbsp; &nbsp; <input name="unitPrice" value="5" size="2" />&nbsp; &nbsp; &nbsp; <input name="subtotal" size="2" />&nbsp; &nbsp; </td>&nbsp; </tr>&nbsp; <tr>&nbsp; &nbsp; <td>&nbsp; &nbsp; &nbsp; <input onblur="calculate()" name="Quantity" size="2" />&nbsp; &nbsp; &nbsp; <input name="unitPrice" value="5" size="2" />&nbsp; &nbsp; &nbsp; <input name="subtotal" size="2" />&nbsp; &nbsp; </td>&nbsp; </tr></table>为了避免得到NaN没有任何值的结果,您可以添加if (!Quantity[i].value) continue;为 for 循环中的第一行,这应该可以防止它。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Html5