我当时正在从事一个使用纯JavaScript制作滑块的个人项目。 但是js代码无法正常工作。 当我单击下一步按钮时,控制台将显示一个错误,提示Uncaught TypeError:无法读取未定义的属性'classList'。 与上一个按钮相同。 我已尽力而为,但找不到答案。 = ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我相信我忽略了我正在做的事情。 我正在尝试玩弄物体并获得一些乐趣,但我遇到了这个奇怪的错误。 我在 C++/C# 中使用过 OO。
我创建了一个游戏环境object,它将包含有关该游戏的所有信息。
然后,我创建了一个验证工具(对象),其中包含有效输入的正则表达式测试,我在其中调用并传递,然后返回测试结果。
使用这些对象,然后我创建了一个launch();
function 提示用户输入用户名并使用该工具进行验证。 正是在这次通话中,我遇到了这个错误。
考虑到这个错误,我不确定我所做的在 JS 中是否合法。
launch(); function launch() { var userNameInput = prompt("Please enter your name:", "User Name"); if (gameEnv.player(userNameInput)) { alert("Please enter only letters for a username."); location.reload(true); } } var gameEnv = { playerName: "", set player(input) { if (validationTool.LetterValidator(input)) { this.playerName = input; return 1; } else { return 0; } }, } var validationTool = { letterOnlyValidation: /^[a-zA-Z^\s]+$/, LetterValidator: function(input) { return letterOnlyValidation.test(input); }, }
首先,除非您需要与旧版本的 JavaScript 兼容,否则 ES6 JavaScript 具有可用于 OO 的实际class
声明。
即使使用较旧的 JS,创建 class 实例的方法是使用function
定义它,并使用new
创建新实例。
此处特定代码的问题:
var gameEnv = {
playerName: "",
set player(input) {
if (validationTool.LetterValidator(input)) {
this.playerName = input;
return 1;
} else {
return 0;
}
},
}
...是你用set
为player
定义了一个 setter,但没有 getter,所以 player 可以设置,但不能读回。
此外,由于此 object 尚未使用new
正确创建为 class 实例, this
指的是全局this
,而不是 object 本身。
这里有几个问题:
=
来赋值。 var gameEnv = { playerName: "", set player(input) { if (validationTool.LetterValidator(input)) { this.playerName = input; alert("player name set"); } else { alert("Please enter only letters for a username."); } }, } var validationTool = { letterOnlyValidation: /^[a-zA-Z^\s]+$/, LetterValidator: function(input) { return this.letterOnlyValidation.test(input); }, } launch(); function launch() { var userNameInput = prompt("Please enter your name:", "User Name"); gameEnv.player = userNameInput; }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.