在js中写计算用户体脂率的表单

img


各位求解,在js中表单里填写的内容不能转化成数值吗,为什么得到的结果总是您的体脂率为:NaN,为什么,是因为我用了表单吗?那表单的内容为什么转化数值类型不成功

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/1097955
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:js的倒计时在ie下显示NAN的最佳解决办法
  • 除此之外, 这篇博客: 【JS008】ES6的学习笔记之扩展运算符(对象篇)中的 一、对象扩展运算符的定义 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    定义:扩展运算符spread)是三个点(...),可以将一个对象转为用逗号分隔的参数序列;和数组不同,参数序列需要用大括号{}包裹,否则会报错。
    错误:Uncaught TypeError: Found non-callable @@iterator

    let o = {
        name:"张三",
        age:18
    };
    
    console.log(o);       //{name: "张三", age: 18}
    console.log({...o});  //{name: "张三", age: 18}
    
  • 以下回答来自chatgpt:

    我的回答:

    首先,计算用户体脂率需要获取身高、体重等数据,在输入框中获取到这些数据后,需要使用parseFloat()函数将其转换为浮点数,确保参与计算的是数字类型的数据。

    其次,计算体脂率时需要使用一定的公式,这里提供一个根据身高、体重和年龄计算体脂率的公式:

    体脂率 = 1.2 * 体重 / (身高 * 身高) + 0.23 * 年龄 - 5.4

    最后,在JS中计算体脂率时,可以将计算结果四舍五入到小数点后两位,确保计算结果的准确性。

    下面是一个示例代码:

    HTML部分:

    <label for="height">身高(CM):</label>
    <input type="number" id="height" name="height" min="1" step="0.1"/>
    
    <label for="weight">体重(KG):</label>
    <input type="number" id="weight" name="weight" min="1" step="0.1"/>
    
    <label for="age">年龄:</label>
    <input type="number" id="age" name="age" min="1" step="1"/>
    
    <button onclick="calculate()">计算体脂率</button>
    
    <p>您的体脂率为:<span id="result"></span></p>
    

    JS部分:

    function calculate() {
      // 获取输入框中的身高、体重和年龄
      var height = parseFloat(document.getElementById("height").value);
      var weight = parseFloat(document.getElementById("weight").value);
      var age = parseFloat(document.getElementById("age").value);
    
      // 计算体脂率
      var result = 1.2 * weight / (height * height) + 0.23 * age - 5.4;
      // 四舍五入到小数点后两位
      result = result.toFixed(2);
    
      // 将计算结果显示在页面上
      document.getElementById("result").innerText = result;
    }
    

    以上代码中,首先使用parseFloat()函数获取输入框中的身高、体重和年龄等数据,然后根据公式计算出体脂率。最后,使用toFixed()函数将计算结果四舍五入到小数点后两位,并将结果显示在页面上。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

你getelementbyid写在onload里面了,此时用户还没有输入呢。