按下多个按钮时执行代码

Execute a code when multiple buttons are pushed

本文关键字:执行 代码 按钮      更新时间:2024-06-28

当按下多个按钮时,我试图执行一些代码,我尝试了这个例子,但它不起作用:

    <script>
    var map = {82: false, 84: false};
    function keydown(e) {
        if (e.keyCode in map) {
            map[e.keyCode] = true;
            if (map[82] && map[84]) {
                alert(" all pressed ");
            }
        }
    }
    function keyup(e)
    {
        if (e.keyCode in map) {
            map[e.keyCode] = false;
        }
    }
    window.addEventListener('keyup', keyup);
    window.addEventListener('keydown', keydown);
    </script>

即使只按下一个按钮,我也会收到警报(当两个按钮都按下时,我也收到了警报)

请问我做错了什么?

您似乎没有附加keyup处理程序,所以一旦按下某个键,它就会在map 中永远标记为true

window.addEventListener('keyup', keyup);

试试这个:

var map = []; 
onkeydown = onkeyup = function(e){
    e = e || event; // to deal with IE
    map[e.keyCode] = e.type == 'keydown';
    if(map[82] && map[84]){ 
        alert('all pressed');
    }
}

这里也已经回答了这个问题:

JavaScript同时按下多个键

请确保您进行了检查,以避免发布重复的问题。

我想我发现了问题,因为警报,程序没有执行keyup函数,map[82]和map[84]总是正确的。