我已经制作了这个简单的形式,从高度和重量变量计算BMI。它适用于我分别向高度和权重变量插入整数,但不幸的是,当我插入十进制数字时,它不会按照它应该的方式工作。
有关解决此问题的任何想法吗?
function Calculate() {
var manWeight = document.getElementById('manWeight').value;
var manHeight = document.getElementById('manHeight').value;
document.getElementById('manBMI').value = parseInt(document.getElementById('manWeight').value) / Math.pow(parseInt(document.getElementById('manHeight').value), 2);
}
<label for="manWeight">Weight: *</label>
<input type="text" name="manWeight" size="35" id="manWeight" required autocomplete="off">
<br>
<label for="manHeight">Height: *</label>
<input type="text" name="manHeight" size="35" id="manHeight" required autocomplete="off"> <br>
<label for="manBMI">BMI:</label>
<input type="text" name="manBMI" size="35" id="manBMI" required disabled autocomplete="off">
<button type="button" id="calculator" name="calculator" onclick="Calculate();">Calculate</button>
答案 0 :(得分:0)
计算最终值时,您不需要使用parseInt(value)
。 parseInt将向下舍入任何可以传入的浮点数。
您可以使用Number(value)
。哪个将解析浮点数。但如果输入无效字符,这将返回NaN。
您可以使用Number
的输入类型来限制有效数字的输入。 (在支持的浏览器上)
function Calculate() {
var manWeight = document.getElementById('manWeight').value;
var manHeight = document.getElementById('manHeight').value;
document.getElementById('manBMI').value = Number(document.getElementById('manWeight').value) / Math.pow(Number(document.getElementById('manHeight').value), 2);
}
<label for="manWeight">Weight: *</label>
<input type="number" name="manWeight" size="35" id="manWeight" required autocomplete="off">
<br>
<label for="manHeight">Height: *</label>
<input type="number" name="manHeight" size="35" id="manHeight" required autocomplete="off"> <br>
<label for="manBMI">BMI:</label>
<input type="text" name="manBMI" size="35" id="manBMI" required disabled autocomplete="off">
<button type="button" id="calculator" name="calculator" onclick="Calculate();">Calculate</button>