Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检查(键盘上的)键是否被按下?_Javascript_Html_Css - Fatal编程技术网

Javascript 如何检查(键盘上的)键是否被按下?

Javascript 如何检查(键盘上的)键是否被按下?,javascript,html,css,Javascript,Html,Css,基本上是标题。我需要一个类似于蹲下按钮的功能——角色只有在按住向下箭头键时才蹲下,而不是只按一次。我如何让它工作?这是我尝试过的,但不起作用。提前谢谢 document.onkeydown = function (event) { let key = event.key; while (key == "ArrowDown") { character.style.width = 50 + "px"; char

基本上是标题。我需要一个类似于蹲下按钮的功能——角色只有在按住向下箭头键时才蹲下,而不是只按一次。我如何让它工作?这是我尝试过的,但不起作用。提前谢谢

document.onkeydown = function (event) {
    let key = event.key;
    while (key ==  "ArrowDown") {
        character.style.width = 50 + "px";
        character.style.height = 30 + "px";
        character.style.top = 115 + "px";
    }
}

按住任意键时,会连续触发
keydown
事件;松开键时,会触发
keydup
事件

要实现您尝试执行的操作,请在触发
keydown
事件时向角色添加样式,并在
keydup
事件时从角色中删除这些样式

以下代码段显示了一个示例:

const character=document.querySelector('.character');
document.body.addEventListener('keydown',(事件)=>{
character.classList.add('crouch');
});
document.body.addEventListener('keyup',(事件)=>{
character.classList.remove('crouch');
});
div{
宽度:100px;
高度:100px;
背景:黄色;
位置:相对位置;
}
克劳奇先生{
高度:50px;
顶部:50px;
}

按任意键
您可以处理
onKeyDown
和onkeydup。如果没有keydup事件,则会将其按下。keydown和keydup事件之间的时间表示按下一个键的持续时间。当你按下键时,进入蹲姿模式,并聆听一声上键停止蹲姿。