<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
之后没有添加权重。
这里有什么问题?
答案 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>