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;
}