即使使用ParseInt()方法,从文本输入中计算值时,获得NAN而不是数字



html

我首先将重量(以磅为单位)转换为千克将其乘以kgval,然后将其重量除以高度的价值,如下所示(((kgs/hefterinmts)/hefterinmts)。指示1.将您的体重(kg)除以米(m)的高度2.然后再次将答案除以您的高度以获取BMI。

<h1>BMI calculator</h1>
<div class="contact-clean">
    <form method="post" id="formOne">
      <div>
        <p>Feet</p>
        <input type="number" id="feetInput" class="form-control col-2"/>
      </div>
      <div>
          <p>Inches</p>
          <input type="number" id="inchesInput"  class="form-control col-2"/>
        </div>
        <div>
            <p>Weight in pounds</p>
          <input type="number" id="weightInput" class="form-control col-2"/>
          </div>
          <button id="calculate" class="btn btn-primary" type="button">Calculate</button>
    </form>
    <p id="result"></p>
    <a href="#" class="recalculate hidden">Calculate again!</a>
</div>

JS

var lbs = document.getElementById('weightInput');
var feetInput = document.getElementById('feetInput');
var inchesInput = document.getElementById('inchesInput');
var bmi;
var weight;
var kgVal;
var feet = parseInt(feetInput.value);
var inches = parseInt(inchesInput.value);
var resultOutput = document.getElementById('result');
var calculate = document.getElementById('calculate');
var heightInMts = parseInt(feet / 3.281);
resultOutput.setAttribute('style','display:none');
var form = document.getElementById('formOne');
var recalculateLink = document.querySelector('a.hidden');
calculate.addEventListener('click', compute);
function compute(){

feet = parseInt(feetInput.value);
inches = parseInt(inchesInput.value);
weight = parseInt(lbs.value);
kgVal = 0.453592;
var kgs = weight * kgVal;
var totalInches = feet * 12 + inches;
bmi = (kgs / heightInMts / heightInMts);

// Hide the form
form.setAttribute('style','display: none');
resultOutput.innerHTML = 'Your BMI is ' + bmi;
resultOutput.setAttribute('style', 'display: block');

recalculateLink.setAttribute('style', 'display: block');
}
// Reopen the form and clear all fields
recalculateLink.addEventListener('click', function () { 
form.setAttribute('style','display: block');
recalculateLink.setAttribute('style', 'display: none');
feetInput.value = '';
inchesInput.value = '';
lbs.value = '';
resultOutput.innerHTML = '';
});

我得到的价值是nan。有人可以告诉我我在做什么错吗计算。谢谢。

nan in JavaScript中的nan是在您尝试对两个不是数字的操作数进行数学操作时,无法转换为数字

,例如

1 - "a" = NaN
1 * "a" = NaN
1 / "a" = NaN

由于在这些情况下,JS无法将字符串" A"转换为一个数字并给出NAN。

有关NAN的更多信息,请在

上检查MDN文档

https://developer.mozilla.org/en-us/docs/web/javascript/reference/global_objects/nan

使用包装纸

let x = function( i) {
    let r = parseInt( i);
    if ( isNaN( r)) {
        return 0;
    }
    return r;
}
x('fart'); // result 0

最新更新