Keydown和keyup eventlisteners正常工作

时间:2017-11-30 14:27:13

标签: javascript events addeventlistener keycode

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

 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;
    }

控制台一直说下来不是一个功能。我如何阅读他们按下的键码,然后在他们拿起钥匙后删除该键码的实例。

3 个答案:

答案 0 :(得分:1)

您未正确访问down的值。使用对象,括号或点符号是可行的方法:

&#13;
&#13;
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;
}
&#13;
&#13;
&#13;

答案 1 :(得分: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;
}

答案 2 :(得分:1)

只需将(65)更改为[65]以获得它的价值。

down(65)调用函数

down[65]访问名为down'

的数组的索引65的值