Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript window.onload事件处理程序(带括号和不带括号)_Javascript - Fatal编程技术网

javascript window.onload事件处理程序(带括号和不带括号)

javascript window.onload事件处理程序(带括号和不带括号),javascript,Javascript,通过加载以下简单的javascript和html,我得到了 未捕获的TypeError:无法读取null的属性“值” 在window.onload事件期间,当且仅当我在事件处理程序分配中包含括号时,如图所示。如果我把那行改成 window.onload=验证添加 (没有括号)我没有在chrome/firefox调试面板中看到错误。为什么呢?有功能上的区别吗 Javascript: window.onload = verifyAdd(); function verifyAdd() { v

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

未捕获的TypeError:无法读取null的属性“值”

在window.onload事件期间,当且仅当我在事件处理程序分配中包含括号时,如图所示。如果我把那行改成

window.onload=验证添加

(没有括号)我没有在chrome/firefox调试面板中看到错误。为什么呢?有功能上的区别吗

Javascript:

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

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


通过执行以下操作:

window.onload = verifyAdd();
您正在分配执行
verifyAdd()
的结果,该结果是
未定义的

通过做

window.onload = verifyAdd;
您只是存储函数
verifyAdd
,以便以后执行

该错误是由于
verifyAdd
的主体造成的:

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

您不会等待文档加载(因为您是在中间执行函数),因此变量
document
为空。然后您处理的是空引用,因此会出现错误消息。

不带
()
表示您正在将函数引用分配给
。onload
。差别很大。(在JavaScript中,函数是对象,因此您可以这样做)
window.onload=verifyAdd
将window.onload函数重写为您的verifyAdd函数。完成此操作后,执行
window.onload()
将调用您的verifyAdd函数。太好了-谢谢!我一定是在我的书中和w3上错过了这一点……谢谢恩马克,这真的澄清了这一点。
 first = document.getElementById("txtFirstName").value;