通过加载以下简单的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>
答案 0 :(得分:1)
通过做:
window.onload = verifyAdd();
您正在分配verifyAdd()
undefined
的执行结果。
通过
window.onload = verifyAdd;
您只是存储函数verifyAdd
以便稍后执行。
错误是由于verifyAdd
的正文:
first = document.getElementById("txtFirstName").value;
您不要等到文档加载(因为您正在执行函数),因此变量document
为空。然后你正在处理空引用,因此错误消息。