当前位置: 首页 > 知识库问答 >
问题:

JavaScript多重按键

佴波鸿
2023-03-14

首先,我要感谢所有人的帮助和回复。

我正在做一个项目,要求用户按下一个键并按住它,它会触发一个操作。

当用户按下另一个键(仍然按住第一个键)时,它将触发另一个动作。

然而,我无法让JavaScript识别同时按下的两个键。

js lang-js prettyprint-override">var down = false;
var keys;

document.addEventListener("keydown", function (e) {
    if (down) {return;}
    down = true;
    keys = (keys || []);
    keys[e.keyCode]=true;
    if (keys[87]){
        console.log("1");

    }
    else if (keys[83]){
        console.log("2");
    }
    else if (keys[83] && keys[87]){
        console.log("sucessfull");
    }
} , false);

document.addEventListener("keyup", function (e) {
    down = false;
    keys[e.keyCode]=false;
    stop();
}, false);
<button id="up" onmousedown="Drive(1)" onmouseup="Drive(2)">UP </button>

共有1个答案

葛鸿熙
2023-03-14

>

  • 删除了“down”变量检查
  • 删除了鼠标按钮元素的东西-似乎与你的问题无关
  • 删除了额外的HTML正文
  • 摆脱其他分支,因为它会在到达

        var keys;
    
        document.addEventListener("keydown", function (e) {
            keys = (keys || []);
            keys[e.keyCode]=true;
            if (keys[87]){
                console.log("1");
    
            }
    
            if (keys[83]){
                console.log("2");
            }
    
            if (keys[83] && keys[87]){
                console.log("sucessfull");
            }
        } , false);
    
        document.addEventListener("keyup", function (e) {
            keys[e.keyCode]=false;
            stop();
        }, false);
    

  •  类似资料:
    • 问题内容: 我在另一个问题(> 如何在Java中同时处理按键?)的注释部分提出了这个问题,并被要求提出一个新问题。 我的问题是,当用户按下按键时,当我创建按键列表ArrayList时,不会通过keyReleased事件足够快地将其删除。我希望运动与“ asdf”和北,东,南,西,东北…等保持一致。 这是我的两个事件的代码: 直到我通过lastKey(String)变量将第二个检查添加到那里,金字塔

    • 我在同一数组中有一对多关系的数据。该组织是按级别建立的。元素的父元素总是比其自身高一级,并由parentId引用。 如何从该数组中获取多级数组?最高级别的元素将是主数组,其子元素在javascript中作为子数组? 预期产出将是 谢谢

    • 我试图排序我的对象数组,这些对象具有按日期最新的第一个和最新的最后一个日期值。 我有以下代码: 请注意,JS Date是新Date()接受的有效日期/格式。 我可以先订购最旧的,但不能先订购最新的,我尝试了以下方法: 当前我不能先按最新日期排序,它只能先按最早的日期排序。 谢啦

    • 我想按日期对对象数组进行排序,但问题是它们的日期是这种格式-。 这里是此数组中一个对象的示例 我必须按修改日期或创建日期对它们进行排序!

    • 我遇到了一个奇怪的JavaScript问题。我正在开发一个使用键盘输入的HTML5画布游戏。游戏的双人模式需要按住键盘上最多6个键。 在我按住键盘上的4或5个键后,似乎停止调用“keyDown”事件。 我使用的代码如下: 控制台应该为我按下的每个键记录一个键代码。然而,它似乎只报告我按住的前4或5个键的密码。这导致了当两个玩家按下太多键时,我的游戏的双玩家版本的控件无法工作。 这是一个bug,是J

    • 本文向大家介绍谈谈JavaScript中function多重理解,包括了谈谈JavaScript中function多重理解的使用技巧和注意事项,需要的朋友参考一下 JavaScript 中的 function 有多重意义。它可能是一个构造器(constructor),承担起对象模板的作用; 可能是对象的方法(method),负责向对象发送消息。还可能是函数,没错是函数,和对象没有任何关系独立存在的