Javascript 切换情况 1、情况 2 以及情况 1 和 2

标签 javascript jquery

这是我的代码:

$(document).keydown(function(e){
    switch(e.keyCode){
        case 39:
            function1();
            break;          
        case 32:
            function2();
            break;
        case 39:
        case 32:
            function3();
            break;
    }
});

除了 case 39: case 32: 之外,它工作正常。 仅当同时满足情况 39 和 32 时才有效。 如果先满足情况 39,然后满足情况 32,同时仍然满足情况 39,则仅运行情况 32。 我想做的是在满足 case 39: case 32: 时运行 function3() ,但不仅仅是在同时满足两者时运行。有解决方法吗?

最佳答案

switch 将简单地匹配它首先遇到的 case 语句。

在您的代码中,function3 永远无法执行,因为当 e.keyCode 为 39 时,它与第一个语句匹配,而当它为 32 时,它与第二个语句匹配。它永远不会到达第三部分。

如果您希望 function3 在任一条件成立时运行:

switch(e.keyCode){
    case 39:
        function1();
        function3();
        break;          
    case 32:
        function2();
        function3();
        break;
}

如果您希望function3始终运行,只需将其放在后面即可:

switch(e.keyCode){
    case 39:
        function1();
        break;          
    case 32:
        function2();
        break;
}
function3();

此外,e.keyCode 可能同时是两个不同数字的想法没有任何意义。它只是一个数字变量。它一次只能保存一个数字。

在评论中,您说您希望在相继按下两个不同的键时运行代码。好吧,那么这是该事件的两次不同触发。您必须跟踪某些状态。

var key39Pressed = false;
var key32Pressed = false;
$(document).keydown(function(e){
     switch(e.keyCode){
        case 39:
            if (key32Pressed)
                function3();
            else
                function1();
            key39Pressed = true;
            key32Pressed = false;
            break;          
        case 32:
            if (key39Pressed)
                function3();
            else
                function2();
            key32Pressed = true;
            key39Pressed = false;
            break;
        default:
            key32Pressed = false;
            key39Pressed = false;
    }
}

关于Javascript 切换情况 1、情况 2 以及情况 1 和 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26126653/

相关文章:

javascript - 将表单数据发送到 Controller (Codeigniter)

javascript - 输入更改时按钮自动启用/禁用

javascript - jQuery 偏移量在某些页面上计算不正确

php - 正则表达式,PHP-从复杂的 json 字符串中删除单引号、双引号和反斜杠

javascript - JQuery DefinitelyTyped、typescript 1.4 和 Webstorm 错误突出显示

javascript - 如何使用 jQuery 对 10 位手机号码进行验证

javascript - 调用 requestAnimationFrame 时 Canvas 无法找到上下文 - ES6

雪花过程中的Javascript数组

javascript - 我无法更新 jquery 中的进度条宽度

javascript - 从具有动态键的对象列表中获取最小的数字