Javascript 我不断地得到一个';未捕获类型错误:无法读取属性';价值';空值';响应和can';我不明白为什么
我意识到我可能是在看一些显而易见的东西,但到目前为止我似乎找不到它。我需要第二双眼睛Javascript 我不断地得到一个';未捕获类型错误:无法读取属性';价值';空值';响应和can';我不明白为什么,javascript,null,typeerror,Javascript,Null,Typeerror,我意识到我可能是在看一些显而易见的东西,但到目前为止我似乎找不到它。我需要第二双眼睛 <!DOCTYPE html> <html> <head> <script type="text/javascript"> var t; t=document.getElementById('temperture'); var v; v=document.getElementById(
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
var t;
t=document.getElementById('temperture');
var v;
v=document.getElementById('speed');
var h;
h=document.getElementById('hum');
function dpOnClick(){
if (h.value < 50){
alert('There is no dew point below 50% humidity');}
else{
document.getElementById('outputBox').innerHTML='The dew point would be '+ t.value - ((100 - (h.value)/100)/2.778);}
return false;
}
</script>
<title> Weather Indexes </title>
</head>
<body>
<h2>Weather Indexes</h2>
<p> Enter degees in fahrenheit and select calculation.</p>
<p> Degrees: <input type="number" id="temperture" size=12 value=''> °F </p>
<p> Wind Speed: <input type="number" id="speed" size=12 value='' > mph </p>
<p> Relative Humidity: <input type="number" id="hum" size=12 value='' ></p>
<input type="button" value="Dew Point" onclick="dpOnClick();">
<hr> <div id="outputBox"></div> </hr>
</body>
</html>
变量t;
t=document.getElementById('temperture');
var v;
v=document.getElementById('speed');
var h;
h=document.getElementById('hum');
函数dpOnClick(){
如果(h.值<50){
警报(“湿度低于50%时没有露点”);}
否则{
document.getElementById('outputBox').innerHTML='露点应该是'+t.value-((100-(h.value)/100)/2.778);}
返回false;
}
天气指数
天气指数
输入华氏度数并选择“计算”
度:华氏度
风速:英里/小时
相对湿度:
将脚本放在body标记的末尾
或者说:
t=document.getElementById('temperture');
v=document.getElementById('speed');
h=document.getElementById('hum');
进入窗口。加载
发生这种情况的原因是,在javascript获取DOM时,DOM尚未创建,这就是它返回null或未定义的原因
编辑
它的window.load不是document.window.load,很抱歉输入错误
看看这把小提琴,看看我的意思:
同样,如果您的脚本保留在标题标记中,效果会更好。- 要修复未捕获的TypeError,可以将脚本标记移动到要获取的html元素之后,也可以将这些代码放到body
事件中onload
- 要修复数字格式错误,您可以通过
检查输入数据类型,并使用typeof
将输入值更改为数字parseInt/parseFloat
天气指数
天气指数
输入华氏度数并选择“计算”
度:华氏度
风速:英里/小时
相对湿度:
变量t;
t=document.getElementById('temperture');
var v;
v=document.getElementById('speed');
var h;
h=document.getElementById('hum');
函数dpOnClick(){
如果(h.值<50){
警报(“湿度低于50%时无露点”);
}否则{
document.getElementById('outputBox')。innerHTML=
“露点是”+
parseInt(t.value)-(100-parseInt(h.value)/100)/2.778);
}
返回false;
}
您的问题是,您必须在单击按钮时读取值,而不是在其他时间。因此,将该部分作为dpOnClick函数的一部分:
function dpOnClick(){
var t = document.getElementById('temperture');
var v = document.getElementById('speed');
var h = document.getElementById('hum');
if (h.value < 50) {
alert('There is no dew point below 50% humidity');
} else {
document.getElementById('outputBox').innerHTML = 'The dew point would be ' + (t.value - (100 - h.value)/100/2.778);
}
return false;
}
函数dpOnClick(){
var t=document.getElementById('temperture');
var v=document.getElementById('speed');
var h=document.getElementById('hum');
如果(h.值<50){
警报(“湿度低于50%时无露点”);
}否则{
document.getElementById('outputBox')。innerHTML='露点为'+(t.value-(100-h.value)/100/2.778);
}
返回false;
}
此外,您必须将整个算术部分包含在括号中,否则字符串串联会在第一次
-
移动..后将结果转换为NaN。。。。。在body标签的末尾。你无法在生成之前获取元素。我爱你。我真不敢相信我脑子里竟然出了这么大的问题……好吧,新问题,现在它告诉我,当我按按钮时,它不是一个数字。我觉得我太累了,看不到这个问题,你能看出来吗?如果你所有的脚本都放在页眉的一个地方会更好。用document.windows.onload将其包装起来,看看我的答案,我还解释了为什么会发生这种情况,以防将来再次遇到这种情况,因为它实际上不是一个数字…值是一个字符串,可以使用typeof t.value
进行检查。您应该改为使用parseInt(t.value)
。
function dpOnClick(){
var t = document.getElementById('temperture');
var v = document.getElementById('speed');
var h = document.getElementById('hum');
if (h.value < 50) {
alert('There is no dew point below 50% humidity');
} else {
document.getElementById('outputBox').innerHTML = 'The dew point would be ' + (t.value - (100 - h.value)/100/2.778);
}
return false;
}