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

我想使用这个公式为举重中的一次最大次数创建一个计算器。
(Weight * Reps)/30 + Weight.

问题是脚本没有在(Weight * Reps)/30.
这里有什么问题?

4

1 回答 1

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>
于 2013-08-07T18:44:20.533 回答