在玩乒乓球游戏时,获取按键数字时,无法读取未定义的 'keyCode' 属性。

7 浏览
0 Comments

在玩乒乓球游戏时,获取按键数字时,无法读取未定义的 'keyCode' 属性。

我正在创建一个乒乓球游戏,并实现了球拍的移动功能。但是当我尝试获取keyCode以确定他们是想向上还是向下移动时,我遇到了这个错误。\n我已经尝试使用console.log来帮助找出问题所在,并在网上查找了如何解决它的方法,但没有任何帮助。\n

//获取wasd球拍的keyCode的javascript代码
function getWasdKey(e){
 var key = e.keyCode;
  if(key == 87){
    return true;
  }
  if(key == 83){
    return false;
  }
}
//获取箭头球拍的keyCode的javascript代码
function getArrowKey(e){
  var key = e.keyCode;
  if(key == 38){
    return true;
  }
  if(key == 40){
    return false;
  }
}
//使用获取keyCode的函数
function paddleArrowMove(){
  var paddlearrowtop = getStyle('paddlearrow', 'top');
    if(getArrowKey == true){//向上
    setStyle('paddlearrow', 'top', paddlearrowtop - 5);
  }
  if(getArrowKey == false){//向下
    setStyle('paddlearrow', 'top', paddlearrowtop + 5);
  }
}
function paddleWasdMove(){
  var paddlewasdtop = getStyle('paddlewasd', 'top');
  if(getWasdKey == true){//向上
    setStyle('paddlewasdtop', 'top', paddlewasdtop - 5);
  }
  if(getWasdKey == false){//向下
    setStyle('paddlewasdtop', 'top', paddlewasdtop + 5);
  }
}
//运行javascript的html

\n我期望球拍能够上下移动,但结果却出现了\"无法读取未定义的属性\'keyCode\'\"的错误。

0
0 Comments

当玩乒乓球游戏时,出现了一个错误信息"Cannot read property 'keyCode' of undefined"。造成这个错误的原因是在调用函数getArrowKeygetWasdKey时,没有传入事件对象e作为参数。这导致e的值为undefined,从而引发错误。

为了解决这个问题,建议不要使用onkeypress这样的属性,而是使用JavaScript添加事件监听器。通过这种方式,通过addEventListener添加的函数在调用时会自动获得事件对象作为参数。因此,可以将在元素中的onkeypress属性移除,并在JavaScript中添加以下代码:

document.body.addEventListener("keypress", function(e) {
    getArrowKey(e);
    getWasdKey(e);
});

另外,如前面所指出的,startIntervals函数是完全不必要的,可能会引发错误。建议将其移除。

在测试上述解决方法时,可能会出现"Uncaught TypeError: Cannot read property 'addEventListener' of null"的错误。这是因为只有在元素加载完成后,才可以使用document.body。这个问题可以通过参考这个问题来解决。

0