我正在做一个游戏,我试图获取一个键码来匹配数组中的字母。
当我按下键盘上的任何键时,都会收到消息:Uncaught TypeError:无法读取未定义的属性“ 0”。
有人知道一个简单的解决方案吗?
var list = ["hi", "bye", "fun", "cool", "good"];
var randomItem;
var keyPressed;
var letters;
var i;
function play(event) {
var keyPressed = event.keyCode;
var keyPressedChar = String.fromCharCode(keyPressed);
console.log("Keyboard press works: " + keyPressed);
splitWord();
checkValue();
}
function splitWord() {
var letters = randomItem.split('');
console.log(letters);
}
function nyttOrd() {
randomItem = list[Math.floor(Math.random() * list.length)];
document.getElementById("word").innerText = "The word is: " + randomItem;
splitWord();
}
function checkValue() {
for (i = 0; i < randomItem.length; i++) {
if (letters[i] == keyPressed) {
console.log("Okey");
} else {
console.log("Not Okey");
}
}
}
<body onload="nyttOrd()" onkeydown="play(event)">
<div id="word"></div>
答案 0 :(得分:0)
如果打印keyPressedChar而不是keyPressed,会发生什么?打印keyPressed的方式现在会将对象转换为可能默认为0的字符串
答案 1 :(得分:0)
第4行的letters
变量在脚本范围内是全局变量,但从未初始化
在splitWord()函数中,您有一个局部变量var letters
从未将值设置为全局var,因此在checkValue()
函数中引发了一个错误,因为从未初始化过字母,但是您试图访问letters[i]