Javascript NaN,当运行体重指数计算器时
我做错了什么?根据教科书上的例子,这应该是足够的代码,但我在浏览器中运行它时得到NaNJavascript NaN,当运行体重指数计算器时,javascript,html,Javascript,Html,我做错了什么?根据教科书上的例子,这应该是足够的代码,但我在浏览器中运行它时得到NaN <!DOCTYPE html> <html lang="en"> <meta charset="utf-8"/> <html> <head> <title>test</title> </head> <body> <
<!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>
测试
Vekt:
霍德:
贝雷恩
window.onload=beregn();
函数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;
}
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>
Vekt:
霍德:
贝雷恩
或者不要在窗口加载时运行
begregn
,而只在单击按钮时运行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>
Vekt:
霍德:
贝雷恩
或者只是不要在窗口加载时运行
begregn
,而只在单击按钮时运行。。。窗口加载时。:)
更改window.onload=beregn()代码>至:
var btn=document.getElementById(“btnBeregn”);
btn.addEventListener(“单击”,删除);
window.onload运行。。。窗口加载时。:)
更改window.onload=beregn()代码>至:
var btn=document.getElementById(“btnBeregn”);
btn.addEventListener(“单击”,删除);
首次运行函数时,您的值未初始化
实际上不需要运行函数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>
Vekt:
霍德:
贝雷恩
函数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;
}
首次运行函数时,您的值未初始化
实际上不需要运行函数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>
Vekt:
霍德:
贝雷恩
函数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;
}
document.getElementById(“txtHoyde”).value
加载页面后,您希望立即返回什么?据我所见,没有价值。如果我不取任何值并对其进行计算,那么结果肯定是NotANumber。文本框中的初始值默认为0,因此您的vekt/(hoyde*vekt)
除以0。加载站点时会触发窗口onload事件,因此当用户打开站点时。此时(我假设文本输入为空)。此外,如果您这样做,函数beregnen将立即执行。此外,您需要使用parseFloat(或类似的东西)解析文本输入的值。那么,您希望document.getElementById(“txtHoyde”).value
在页面加载后立即返回什么?据我所见,没有价值。如果我不取任何值并对其进行计算,那么结果肯定是NotANumber。文本框中的初始值默认为0,因此您的vekt/(hoyde*vekt)
除以0。加载站点时会触发窗口onload事件,因此当用户打开站点时。此时(我假设文本输入为空)。此外,如果您这样做,函数beregnen将立即执行。此外,您还需要使用parseFloat(或类似的东西)解析文本输入的值:P.我看到了“0”示例值,几乎想响应,但后来您更改了它们。。。。哇,糟透了:D.哈哈,我写答案太快了,但幸运的是我自己抓住了答案。由于使用了onclick
属性,我对你的答案投了反对票。你答对了90%。您应该使用window.onload=function(){document.getElementById('btnbegreggn')。onclick=begregn;}代码>@Marc answer也有同样的问题。我正在使用onclick
属性与兼容IE@IsmaelMiguel我认为我们两人都不应该投反对票。该解决方案是正确的,并且与所有现代浏览器兼容。OP是否要求与谁推荐的iRE兼容addEventListener
在IE 8和d中甚至不起作用