繁体   English   中英

NaN,运行BMI计算器时

[英]NaN, when running BMI calculator

我究竟做错了什么? 根据教科书示例,这应该是足够的代码,但我在浏览器中运行它时会得到NaN。

<!DOCTYPE html>
    <html lang="en"> 
    <meta charset="utf-8"/>
    <html>
      <head>
        <title>test</title>
      </head>
    <body>

    <p>Vekt: <input type="text" id="txtVekt" /></p>
    <p>Hoyde: <input type="text" id="txtHoyde" /></p>
      <button id="btnBeregn">Beregn</button>
      <p id="resultat"></p>

      <script>
    window.onload = beregn();


      function beregn(){
        var hoyde = document.getElementById("txtHoyde").value;
        var vekt = document.getElementById("txtVekt").value;

        var bmi = vekt / (hoyde * vekt);

        document.getElementById("resultat").innerHTML = "Din BMI er: " + bmi;
      }

    </script>

      </body>
    </html>

页面加载时hoydevekt没有任何值,因为输入是空的,所以没有理由为什么bmi应该给你除NaN以外的任何东西。

您需要为这些输入提供默认值(可能是1开始),然后在单击按钮时重新运行begregn函数:

 <p>Vekt: <input type="text" id="txtVekt" value=1/></p>
 <p>Hoyde: <input type="text" id="txtHoyde" value=1/></p>
 <button id="btnBeregn" onclick="begregn()">Beregn</button>

或者只是不要在窗口加载时运行begregn ,而是仅在单击按钮时运行

window.onload在窗口加载时运行.... :)

改变window.onload = beregn(); 至:

var btn = document.getElementById("btnBeregn"); btn.addEventListener("click", beregn);

  1. 首次运行该函数时,不会初始化您的值
  2. 实际上不需要运行函数onload ,尤其是因为您的值未初始化。 请注意,我的代码删除了onload调用。

您可以在单击按钮时运行计算。 您可能还想在运行该函数之前添加一些验证,但我会将该练习留给您。

  <body>
 <p>Vekt: <input type="text" id="txtVekt" /></p>
    <p>Hoyde: <input type="text" id="txtHoyde" /></p>
      <button id="btnBeregn" onclick="beregn();" >Beregn</button>
      <p id="resultat"></p>

      <script>
      function beregn(){
        var hoyde = document.getElementById("txtHoyde").value;
        var vekt = document.getElementById("txtVekt").value;

        //this assumes your inputs are valid numbers...
        var bmi = vekt / (hoyde * vekt);

        document.getElementById("resultat").innerHTML = "Din BMI er: " + bmi;
      }

    </script>

   </body>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM