我无法获取键码来匹配数组中的值

时间:2018-10-18 13:29:19

标签: javascript

我正在做一个游戏,我试图获取一个键码来匹配数组中的字母。

当我按下键盘上的任何键时,都会收到消息: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>

2 个答案:

答案 0 :(得分:0)

如果打印keyPressedChar而不是keyPressed,会发生什么?打印keyPressed的方式现在会将对象转换为可能默认为0的字符串

答案 1 :(得分:0)

第4行的letters变量在脚本范围内是全局变量,但从未初始化 在splitWord()函数中,您有一个局部变量var letters从未将值设置为全局var,因此在checkValue()函数中引发了一个错误,因为从未初始化过字母,但是您试图访问letters[i]