这里我有一段简单的代码。我希望它能够在键盘上按下代表那些字母的按钮提醒字母[AZ]。现在它只提醒keyCodes.I我知道我可以做一个开关语句。但它将是一大块switch语句。所以我的问题是:
1.有没有办法可以在没有开关声明的情况下按下按键上的每个字母?
2.左,右,上,下箭头键没有提示他们的键码编号。为什么会这样?我怎样才能克服这个问题?
(function(){
document.body.addEventListener('keypress',function(e){
alert(e.keyCode);
});
})();
答案 0 :(得分:1)
显示来自keyCode的字母:
alert (String.fromCharCode(e.keyCode));
要解决箭头键没有显示keyCode
s(37 - 40)的问题:
(function(){
document.body.addEventListener('keyup',function(e){
// the keyCodes of the arrow keys, matched to an appropriate
// unicode arrow symbol:
var directionals = {
'38' : 8593, // String.fromCharCode(38) => &
'39' : 8594, // String.fromCharCode(39) => '
'40' : 8595, // String.fromCharCode(40) => (
'37' : 8592 // String.fromCharCode(37) => %
},
// if there is a falsey value from directionals object,
// we use the e.keyCode unchanged; otherwise we substitute
// e.keyCode for the above-supplied arrow-character:
keyCodeToUse = !directionals[e.keyCode] ? e.keyCode : directionals[e.keyCode];
// I don't like alerts; to access the console (in most browsers) press 'F12':
console.log(String.fromCharCode(keyCodeToUse));
});
})();

html, body {
background-color: rgba(255,255,180, 0.5);
height: 100%;
}

问题本身就是(无论出于何种原因)箭头键只返回keyup
上的keyCodes和keydown
上的而不是{/ 1>}上的。此外,keypress
使用其密钥代码(如上面的JavaScript中所示)返回实际上不是箭头的字符。因此,我们必须使用备用Unicode引用(在上面提供,在JavaScript中)。
参考文献:
答案 1 :(得分:1)
您可以使用String.fromCharCode
功能:
String.fromCharCode(e.keyCode)