这是我的代码:
$(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/