为什么我没有得到正确的价值?

时间:2013-08-07 18:39:24

标签: javascript forms calculator

<html>
<head><title>One rep max</title>
<script type="text/javascript">

    function calculateOneRepMax(){
        var p = document.getElementById("button");

        p.onclick = showAlert;
    }
    function showAlert(){
        var weight = document.getElementById("weight").value;
        var reps = document.getElementById("reps").value;
        var orm = ((weight * reps )/ 30) + weight;
        alert(orm);
    }
</script> 
</head>
<body onload="calculateOneRepMax()">
<form>
  Weight: <input type="text" id="weight"/><br>
  Reps: <input type="text" id="reps" /><br>
  <input id="button" type="button" value="Calculate" onClick="calculateOneRepMax()" />
</form> 
</body>
</html>

我想使用此公式为举重中的一个rep max创建一个计算器。
(Weight * Reps)/30 + Weight

问题是脚本在(Weight * Reps)/30之后没有添加权重。
这里有什么问题?

1 个答案:

答案 0 :(得分:0)

在javascript中向数字添加字符串时,javascript不会执行算术加法。相反,它将两个值连接成一个新字符串。

修复代码的一种方法是使用parseInt确保你的体重和代表是数字:

    var weight = parseInt(document.getElementById("weight").value,10);
    var reps = parseInt(document.getElementById("reps").value,10);

还有其他方法可以做同样的事情。

编辑:

您的代码还有另一个问题。 calculateOneRepMax是不必要的,并且比它应该更频繁地完成它的工作。放弃它会更好。从正文中删除onload并将按钮上的onclick更改为showAlert():

<html>
<head><title>One rep max</title>
<script type="text/javascript">
    function showAlert(){
        var weight = document.getElementById("weight").value;
        var reps = document.getElementById("reps").value;
        var orm = ((weight * reps )/ 30) + weight;
        alert(orm);
    }
</script> 
</head>
<body>
<form>
  Weight: <input type="text" id="weight"/><br>
  Reps: <input type="text" id="reps" /><br>
  <input id="button" type="button" value="Calculate" onClick="showAlert()" />
</form> 
</body>
</html>