![](/img/trans.png)
[英]Trying to make a BMI Calculator on JS, the calculation always returns 'NaN'
[英]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>
页面加载时hoyde
和vekt
没有任何值,因为输入是空的,所以没有理由为什么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);
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.