2017-03-13 121 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);