Keydown 和 keyup 事件监听器工作正常

Keydown and keyup eventlisteners are working properly

我有一个代码,用于检测某人何时按下某个键,然后当他们释放它时,该代码会删除表明他们正在按下该键的代码。我试图使用我在网上找到的信息拼凑一些代码。 这是我目前所拥有的:

 var down = {};
    document.addEventListener("keydown", function(evt) {
        down[evt.keyCode] = true;
        console.log(down)
    });
    document.addEventListener("keyup", function(evt) {
        delete down[evt.keyCode];
    });
var p = 0
if (down(65) == 65 && p - 1 >= 0) {
        p -= 1;
    }
    if (down(65) == 68 && p + 1 <= 9) { 
        p += 1;
    }

控制台一直说down不是函数。我如何读取他们按下的键码,然后在他们抬起键后删除该键码实例。

您没有正确访问 down 的值。对于对象,方括号或点符号是可行的方法:

var down = {};

document.addEventListener("keydown", function(evt) {
  down[evt.keyCode] = true;
  console.log(down)
});

document.addEventListener("keyup", function(evt) {
  delete down[evt.keyCode];
});

var p = 0;

if (down[65] === 65 && p - 1 >= 0) {
  p -= 1;
}
if (down[65] == 68 && p + 1 <= 9) {
  p += 1;
}

down['65'],不是down(65)

你还应该在比较之前测试down['65']是否存在:

if (down['65'] && down['65'] == 65 && p - 1 >= 0) {
    p -= 1;
}
if (down['65'] && down['65'] == 68 && p + 1 <= 9) { 
    p += 1;
}

只需将 down(65) 更改为 down[65] 即可获得它的值。

down(65) 作为函数向下调用

down[65] 访问名为 down 的数组的索引 65 的值'