2017-03-13 92 views
1

当我在做什么错?根据教科书中的例子,这应该是足够的代码,但是在浏览器中运行时,我会得到NaN。NaN,则运行BMI计算器

<!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> 
+1

那么,你期望'document.getElementById(“txtHoyde”).value'在页面加载后立即返回什么?从我所看到的,没有任何价值。如果我没有价值并对其进行数学运算,那么肯定结果必须是Notanumber。 – csmckelvey

+0

你在文本框默认为0初始值那么你的'vekt /(hoyde * vekt)'由0 –

+0

窗口的onload事件触发时现场负载分配,所以当用户打开该网站。那时(我认为,文本输入是空的)。另外,如果你这样做,函数beregnen将立即执行。另外,你需要用parseFloat(或类似的东西)解析文本输入的值。 – scriptify

回答

0
  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> 
0

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,但点击按钮只有当

+0

:P.我看到了“0”的样本值,几乎想到要回应,但后来你改变了他们......敬畏,变得糟糕:D。 –

+0

哈哈我写的答案太快了,但幸运地发现我自己 – Pabs123

+1

这是如何downvoted? – Pabs123

0

的window.onload运行......在窗口的负荷。 :)

更改window.onload = beregn();到:

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