为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

互换的青春 2024-01-22 20:45:45
我从数据库中提取记录,将它们显示在带有表单输入字段的表行中。这意味着将会有多行,如下面的示例 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>
查看完整描述

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 循环中的第一行,这应该可以防止它。



查看完整回答
反对 回复 2024-01-22
  • 1 回答
  • 0 关注
  • 75 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信