2013-08-07 3 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 будет пытаться запускать без значений ... потому что во время выполнения нет никакого набора в html – markS

ответ

0

В javascript, когда вы добавляете строки в число, javascript не выполняет арифметическое добавление. Вместо этого он объединяет два значения вместе в новую строку.

Один из способов исправить код, чтобы использовать ParseInt, чтобы убедиться, что ваш вес и повторений являются числами:

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

Там другие способы сделать то же самое.

Edit:

Там другая проблема с вашим кодом. calculateOneRepMax не нужен и делает работу чаще, чем нужно. Тебе было бы лучше сбросить его. Извлечение нагрузки из корпуса и замена кнопки включения на кнопку 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> 
Смежные вопросы