使用javascript自动求和减去

时间:2016-02-26 05:41:10

标签: javascript

假设我想要4个文本框,最后一个文本框是总的。第一个框我放20,第二个框20,最后一个框是10.如果我使用函数更新总结()总计总数,它将使总数为50.如果我减去10而没有放置' - 10'在文本框中'?

的javascript: -

<script type="text/javascript"><!--calculation-->
<!--
function updatesum() {
document.form.jumlah.value = (document.form.rm1.value -0) + (document.form.rm2.value -0) + (document.form.rm3.value -0) + (document.form.rm4.value -0) + (document.form.rm5.value -0) + (document.form.rm6.value -0) + (document.form.rm7.value -0) + (document.form.rm8.value -0) + (document.form.rm9.value -0) + (document.form.rm10.value -0) + (document.form.rm11.value -0) + (document.form.rm12.value -0) + (document.form.rm13.value -0) + (document.form.rm14.value -0) + (document.form.rm15.value -0);
}
//-->
</script>

HTML: -

<tr>
<td>13.</td>
<td><input type="text" class="form-control" id="d13" name="d13"></td>
<td><input type="text" class="form-control calc" id="rm13" name="rm13"    onChange="updatesum()"></td>
  </tr>
 <tr>
    <td>14.</td>
   <td><input type="text" class="form-control" id="d14" name="d14"></td>
   <td><input type="text" class="form-control calc" id="rm14" name="rm14" onChange="updatesum()"></td>
 </tr>
 <tr>
   <td>15.</td>
    <td><input type="text" class="form-control" id="d15" name="d15"></td>
    <td><input type="text" class="form-control calc" id="rm15" name="rm15" onChange="updatesum()"></td>
  </tr>
  <tr>
    <td></td> 
    <td align="right">Total</td>
    <td><input type="text" class="form-control calc" id="jumlah" name="jumlah" readonly value=""></td>
   </tr>

2 个答案:

答案 0 :(得分:1)

短而甜:

(document.form.rm15.value -0)更改为(document.form.rm15.value * -1)

说明:

每个(document.form.(name).value -0)表达式只是将您在输入框中的值转换为数字。每个之间的+将它们加在一起。将它们转换为数字的另一种选择是将它们相乘。由于您希望减去,并且添加负数与减去相同,我们可以将您的值转换为数字,并一次性反转它,因此* -1

注意:您在JavaScript中为我们提供的输入框比您在HTML中提供的输入框要多,所以我假设您在实际应用程序中拥有所有这些输入。

注2:除了写出完整的等式之外,肯定有更简洁的方法,但更新你的方法不在问题的范围内。

答案 1 :(得分:0)

将您的updatesum方法更改为

function updatesum()
{
        var total = 0;
        $('.calc:not(#jumlah)').each(function(){
          var value = $(this).val();
          //console.log("value " + value);
          if ( value.indexOf( "minus" ) != -1 )
          {
              value = -(parseFloat(value.replace( /minus/g, "" )));
              console.log("value " + value);
          }
          if ( String(value).length > 0 && !isNaN(value))
          {
            total += parseFloat(value);     
            //console.log(" running total " + total);
          }
        });
        console.log("total " + total);
        $('#jumlah').val(total);
}