2013-08-07 35 views
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之后添加权重。
这里有什么问题?

+0

为什么你有事件触发onload onload?点击你的按钮后,你是不是只希望它计算? onload会尝试运行没有值......因为在执行时没有任何html集 – markS

回答

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> 
相关问题