2013-08-07 168 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> 
相關問題