Javascript 几个键盘事件

Javascript several keyboard events

我目前正在为 Play/Pause (id="play")、上一个 (id=rew) 和下一个 (id="fwd").

我希望在按空格键时 Play/Pause 变为 "clicked"。 按向左箭头时,我希望 Previous 为 "clicked"。 我希望 Next 在按 RIGHT ARROW 时为 "clicked"。

我已经成功地管理了 Play 的空格键控件:

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

document.onkeydown = function (e) {
    if (e.keyCode == 32) {
        play.click();
    }
}; 

但是,当我为我的脚本中的其他两个按钮添加相同的按钮时,播放的空格键控件不再起作用,其他两个也是如此。

所以,我目前在我的脚本中显然不起作用的是:

<script>
var play = document.getElementById("play");

document.onkeydown = function (e) {
    if (e.keyCode == 32) {
        play.click();
    }
}; 


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

document.onkeydown = function (e) {
    if (e.keyCode == 37) {
        rew.click();
    }
}; 

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

document.onkeydown = function (e) {
    if (e.keyCode == 39) {
        fwd.click();
    }
}; 
</script>

我做错了什么?

您的每个按键事件都会覆盖前一个。

相反,将所有逻辑放入一个按键事件中,如下所示:

var play = document.getElementById("play");
var rew = document.getElementById("rew");
var fwd = document.getElementById("fwd");

document.onkeydown = function(e) {
  if (e.keyCode == 32) {
    play.click();
  } else if (e.keyCode == 37) {
    rew.click();
  } else if (e.keyCode == 39) {
    fwd.click();
  }
};

当您多次分配给 onkeydown 时,只会分配最后一个,因为它会覆盖前一个。您可以改用 addEventListener ,但这也不是最好的方法。像这样在一个事件侦听器中进行更多测试:

var play = document.getElementById("play");
var rew = document.getElementById("rew");
var fwd = document.getElementById("fwd");

document.onkeydown = function (e) {
    if (e.keyCode == 32) {
        play.click();
    }
    else if(e.keyCode == 32) {
        rev.click();
    }
    else if(e.keyCode == 32) {
        fwd.click();
    }
};