JavaScript中的数学运算不会运行

时间:2015-10-01 22:47:08

标签: javascript

金额x .25 x月+金额/月=结果。我试过但结果总是错的。

Amount: <input id="amount" type="text" />
Month: <input id="month" type="text" />

<input type="submit" onclick="output();">

<p id="result"> </p>

<script>
    function output(){
        var amount = parseInt(document.getElementById('amount').value);
        var month = parseInt(document.getElementById('month').value);
        document.getElementById('result').innerHTML = amount * .25 * month + amount/month;
    }
</script>

2 个答案:

答案 0 :(得分:0)

我怀疑你的问题是双重的。

1)操作顺序。使用括号指定应该如何计算事物。

document.getElementById('result').innerHTML = amount * .25 * month + (amount/month);

2)如果您的var amount意图是浮点数(例如:12.45),请改用parseFloat

var amount = parseFloat(document.getElementById('amount').value);

相关阅读材料

  1. http://www.w3schools.com/jsref/jsref_parsefloat.asp
  2. http://javascript.about.com/od/variablesandoperators/a/vop08.htm

答案 1 :(得分:0)

您没有说明您认为结果出错的原因。但是,可能是 parseInt 的使用是截断浮点值。

表单控件的值始终是字符串,但是当在除添加之外的数学运算中使用时,它们会自动转换为数字,就像Number(value)一样。由于对每个值执行的第一个操作是乘法或除法,因此您可以这样做:

function output(){
    var amount = document.getElementById('amount').value;
    var month = document.getElementById('month').value;
    document.getElementById('result').innerHTML = (amount * .25 * month + amount/month).toFixed(2);
}
Amount: <input id="amount" type="text">
Month: <input id="month" type="text">
<input type="submit" onclick="output();">
<p id="result"></p>

但是,为了稳健性,首先验证输入值,然后显式转换为数字是个好主意。第一个可以使用简单的正则表达式完成,第二个使用一元+。关于如何做到这两点,这里有很多好的答案。