带有和没有括号的javascript window.onload事件处理程序

时间:2014-08-02 21:48:10

标签: javascript

通过加载以下简单的javascript和html,我得到了着名的

  

未捕获的TypeError:无法读取属性'值'为null

在window.onload事件期间,当且仅当我在事件处理程序赋值中包含括号时,如图所示。如果我将该行更改为

  

window.onload = verifyAdd;

(无括号)我没有在chrome / firefox调试面板中收到错误。为什么呢?有功能差异吗?

使用Javascript:

window.onload = verifyAdd();
function verifyAdd()  {
    var first;

    first = document.getElementById("txtFirstName").value;
}

HTML:

<html>
<head>
    <script type="text/javascript" src="./frobozz.js"></script>
</head> 
<body>
    <input type=text id=txtFirstName name=txtFirstName size=30 onchange=verifyAdd() />
</body>
</html>

1 个答案:

答案 0 :(得分:1)

通过做:

window.onload = verifyAdd();

您正在分配verifyAdd() undefined的执行结果。

通过

window.onload = verifyAdd;

您只是存储函数verifyAdd以便稍后执行。

错误是由于verifyAdd的正文:

 first = document.getElementById("txtFirstName").value;

您不要等到文档加载(因为您正在执行函数),因此变量document为空。然后你正在处理空引用,因此错误消息。