在玩乒乓球游戏时,获取按键数字时,无法读取未定义的 'keyCode' 属性。
在玩乒乓球游戏时,获取按键数字时,无法读取未定义的 '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\'\"的错误。
当玩乒乓球游戏时,出现了一个错误信息"Cannot read property 'keyCode' of undefined"。造成这个错误的原因是在调用函数getArrowKey
和getWasdKey
时,没有传入事件对象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
。这个问题可以通过参考这个问题来解决。