首页 > 解决方案 > 按下键时如何触发事件

问题描述

我之前尝试过代码,但是当我按住 W 时它会重复代码,但我想这样做,如果我按住它,它只会执行代码之一。

window.addEventListener("keydown", checkKeyPressW, false);

var player = document.getElementById("player");

var leftMarginCounter = 0;
var bottomMarginCounter = 0;

var leftMarginCounterToString = "";

function checkKeyPressA_D(keyPressed) {
    if(keyPressed.keyCode == "97") {
        if(player.style.marginLeft != "0px") {
            leftMarginCounter = leftMarginCounter - 1;
            leftMarginCounterToString = leftMarginCounter.toString();
            leftMarginCounterToString = leftMarginCounterToString + "px";
            player.style.marginLeft = leftMarginCounterToString;
        }
    }
    else if(keyPressed.keyCode == "100") {
        if(player.style.marginLeft != "1316px") {
            leftMarginCounter = leftMarginCounter + 1;
            leftMarginCounterToString = leftMarginCounter.toString();
            leftMarginCounterToString = leftMarginCounterToString + "px";
            player.style.marginLeft = leftMarginCounterToString;
        }
    }
};

function checkKeyPressW(keyPressedW) {
    if(keyPressedW.keyCode == "87") {
        console.log("Pressed w");
    }
}

标签: javascript

解决方案


JS 演示:https ://jsfiddle.net/utnqeLmf/1/

代码:

 window.addEventListener("keydown", checkKeyPressW,  {
      once : true
 });

从文档

once 一个布尔值,表示添加后最多应调用一次侦听器。如果为 true,则侦听器将在调用时自动删除。

编辑

如果您想在按下按键时避免连续按键安慰,请将事件更改为 keyup

window.addEventListener("keyup", checkKeyPressW);

推荐阅读