【发布时间】:2017-05-02 11:12:05
【问题描述】:
所以我在 if 语句 var message 和 var body 的回调函数中声明了两个变量,现在当我运行代码时,当 if 语句命中 else 语句然后它抛出 Uncaught TypeError: Cannot read property 'parentNode' of undefined
at HTMLButtonElement.<anonymous> 时出现错误
当我从声明中删除 var 关键字并全局声明它们时,我没有收到任何错误。问题是什么?我虽然 javascript 是函数范围语言,而不是块范围。即使在函数顶部的 if 语句之外声明它们也无济于事。
代码:
function clickBtn() {
var btn = document.getElementById("button");
btn.addEventListener("click", function () {
if (theName.value == "") {
var message = document.createElement("p");
message.className = "message";
message.innerHTML = "You forgot the name and email";
var body = document.getElementsByTagName("body")[0];
body.appendChild(message);
} else {
message.parentNode.removeChild(message);
var user1 = new User (theName.value, theEmail.value);
users.push(user1);
console.log(JSON.stringify(users, null, 2));
}
theName.value = "";
theEmail.value = "";
});
}
clickBtn();
【问题讨论】:
-
什么是
theName?请也出示该代码! -
当你说问题没有发生时,你能显示代码吗?
标签: javascript scope closures var