Javascript-未捕获类型错误:无法读取属性

Javascript-未捕获类型错误:无法读取属性,javascript,Javascript,HTML: 在“usersName.addEventListener(“input”,writeLabel,false);”的最后一行中有一个错误“Uncaught TypeError:无法读取未定义的属性'addEventListener'”首先,您应该检查变量usersName是否存在 var usersName, noteEntered, textInput, targetName; usersName.addEventListener("input", writeLabel, fals

HTML:


在“usersName.addEventListener(“input”,writeLabel,false);”的最后一行中有一个错误“Uncaught TypeError:无法读取未定义的属性'addEventListener'”

首先,您应该检查变量usersName是否存在

var usersName, noteEntered, textInput, targetName;

usersName.addEventListener("input", writeLabel, false);

您正在尝试使用与HTML元素
id
值同名的全局对象属性设置。这是标准中规定的,并非错误。但是,您可以将相同的标识符名称重新定义为行中的变量

if (typeof usersName !== undefined) {
// here your code
}
它将变量初始化为
undefined
,因为它们在声明中没有初始值设定项。如果以后在HTML文件中遇到与变量名相同的
id
的HTML元素id,则声明优先,并且不会更改或重新初始化

此外,如果在全局范围内执行
var
声明,它将替换同名的窗口属性(因此在HTML之后包含脚本也不起作用)

您至少需要从该变量声明列表中删除
usersName
nodeEntered
,以允许为具有这些名称的全局属性指定HTML元素值


还有一些替代方法,例如使用
let
而不是
var
,然后作为全局对象的属性访问元素(例如
window.usersName
),或者使用
document.getElementById(idValue)
访问元素。后一种方法是最常见的。

原因是您从未选择要将事件绑定到的元素。你能发布用户名输入html吗?没有html可以绑定到usersName…所以根本没有html?没有html看起来像用户名,你没有尝试选择任何东西,所以它会出错。我想看看这里,了解如何选择元素:
if (typeof usersName !== undefined) {
// here your code
}
var usersName, noteEntered, textInput, targetName;