JavaScript键盘事件和比较

时间:2015-03-15 11:27:15

标签: javascript events keyboard

我写了一个函数,它应该检查是否按下了一个特定的按钮。但是,它似乎总是返回错误。这是功能:

function keyPressed(ev) {
    var r = false;
    document.onkeypress = function(e) {
        if (ev == e.which || ev == e.keyCode) {
            r = true;
        }
    }
    return r;
}

这就是你的称呼方式:

if (keyPressed(119)) {
    // do something
}

使用提示进行检查,当我按下" W"时它们似乎是相同的数字,但该功能总是返回false。它们是不同的类型吗?

1 个答案:

答案 0 :(得分:1)

每按一次键,

document.onkeypress将被执行。但keyPressed只有在你调用它时才会被执行。因此,除非您在推送触摸的同时启动keyPressed(touch),否则它将始终返回false。

你做的是:当我打电话给keyPressed(时)时,将一个函数绑定到document.onkeypress。然后返回r,它尚未被绑定修改。

我建议您尝试在大型document.onkeypress函数中添加类似开关的回调结构。

奖励:e。不赞成使用,如果可能,请使用e.key。