在 JavaScript 中检测箭头键的按下情况

本文介绍了JavaScript中的事件监听器,特别是keydown和keyup事件。keydown事件在按键被按下时触发,keyup事件在按键释放时触发。事件处理程序可以用来响应这些事件,例如显示警报或执行其他操作。文中通过示例展示了如何使用键代码和键标签来识别和处理不同的按键输入。
摘要由CSDN通过智能技术生成

[什么是事件]

从编码的角度来看,我们进行的物理活动会引起一个事件。这些事件是程序执行的驱动力;它在使用图形用户界面 (GUI) 时很有帮助。

我们可以通过使用事件侦听器过程来制作这些快捷方式和热键,该过程侦听特定事件并将此信息传递给处理程序以处理事件。

简而言之,输入按下的键(鼠标或键盘),我们也可以直接使用处理这些事件的事件处理程序。我们将深入演示这两种范式。

[JavaScript 中最常见的 EventListeners 是什么]

JS 中有很多事件处理函数,这两个是最常见的,它们的作用是:

  • keydown:当你按下一个键时注册,如果你按住它会持续注册
  • keyup:释放键时注册

[JavaScript 中的 Keydown 事件监听器]

.onkeydown 事件处理程序告诉编译器在按下所需的键后立即运行某个 function();通过放置一个 alert("message"),我们可以显示一个包含指定消息的警报框。

在下面的代码中,我们使用了两个事件属性,.key,它将返回按下的键的标签,以及 .keyCode,它返回特定键的代码。这些键码类似于 ASCII,因为每个键都映射到特定的字母数字值。

在我们的示例中,我们输入 k 作为函数参数。

document.onkeydown = function(e) {
    alert(e.key+e.keyCode); // shows k75
};

一旦按下特定键,我们就会收到一条警报,显示按下的键与其键代码连接。按键标签和按键代码使操作代码逻辑更容易,广泛用于事件驱动的操作。

让我们看一个例子,展示我们如何利用这些参数来发挥我们的优势。

document.onkeydown = function(e) {
    switch (e.keyCode) {
        case 37:
            alert("left"); //show the message saying left"
            break;
        case 38:
            alert("up"); //show the message saying up"
            break;
        case 39:
            alert("right"); //show the message saying right"
            break;
        case 40:
            alert("down"); //show the message saying down"
            break;
    }
};

在这里,我们使用一个简单的 switch case,它接收按键代码,检查它属于哪个 case,并评估它以显示一条消息。假设我们按下左箭头键;然后它将显示 left 警报,依此类推。

我们也可以用这种方式定义事件监听器:

document.addEventListener("keydown", function(event) {});

在这里,我们看一下另一种范式,以及它与我们以前的方法有何不同:

document.addEventListener("keydown", function(event) {
    if (event.key == "ArrowLeft"){
        alert("Left key"); //show the message saying Left key"
    } else if (event.key == "ArrowUp"){
        alert("Up key"); //show the message saying Up key"
    } else if (event.key == "ArrowRight"){
        alert("Right key"); //show the message saying Right key"
    } else if (event.key == "ArrowDown"){
        alert("Down key"); //show the message saying Down key"
    }
});

这段代码似乎给出了与我们之前的代码相同的输出。尽管如此,这里还是有一个问题,这里我们没有明确地使用键代码来玩弄我们的逻辑,而是直接使用诸如向下箭头向上箭头之类的键标签并比较它们以显示所需的消息。

假设我们按下了向上箭头,那么我们的 if 代码块将检查从函数返回的键标签是否与给定的键标签匹配。如果是,则执行该块,并显示一条消息。

现在,当我们可以记住更容易记住的助记键标签时,我们不必记住每个键的键码。当我们不知道按键代码并涉足逻辑时,这非常方便。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小柴没吃饱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值