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