我正在尝试让span元素中的文本根据使用Jquery中的keydown函数按下的键进行更改。
脚本运行正常,直到我的所有if语句。
我的脚本示例:
$(document).ready(pressed);
function pressed(){
$('html').keydown(function (e) {
var a = 65;var b = 66;var c = 67;
if (e.keyCode == a){
$('span').text('a');
console.log('Key Pressed: a');
}else if(e.keyCode == b){
$('span').text('b');
console.log('Key Pressed: b');
}else if(e.keyCode == c){
$('span').text('c');
console.log('Key Pressed: c');
}
});
}
我有2个不同的控制台日志,按下按键时应该报告。一个按下任何一个按键,一个按下特定按键时(当前只有a,b和c)。
有人可以告诉我我做错了什么以及它为什么不起作用?
答案 0 :(得分:4)
答案 1 :(得分:3)
正如Rooster / FaceOfJock所说,你正在覆盖e,这就是为什么不起作用。
我在下面做了一些更改,只是为了提高理解力并使代码更小。
// JavaScript Document
$(document).ready(pressed);
console.log('keyPressed.js is running');
function pressed(){
console.log('pressed script began');
$('html').keydown(function (e) {
console.log(e.keyCode);
var codes = {
q:81, w:87, e:69, r:82, t:84, y:89, u:85, i:73, o:79,
p:80, a:65, s:83, d:68, f:70, g:71, h:72, j:74, k:75,
l:76, z:90, x:88, c:67, v:86, b:66, n:78, m:77, space:32,
backspace:8, tab:9, caps:20, enter:13, shift:16, ctrl:17,
alt:18
};
$.each(codes,function(key,code){
if(e.keyCode == code){
$('span').text(key);
console.log('Key: ' + key);
}
});
});
}
希望这有帮助。
答案 2 :(得分:1)
你的问题是你凌驾于e
的意义上。将名称切换为evt
或其他内容。
此外,您应该使用switch
语句而不是所有if
个语句。
答案 3 :(得分:-1)
$(function(){
$(document).keyup(function(e){
var a = 65;
var b = 66;
var c = 67;
switch(e.which){
case a:
console.log('you pressed a')
break;
case b:
console.log('you pressed b')
break;
case c:
console.log('you pressed c')
break;
}
})
})
这里是jsfiddle。运行inspect元素查看结果。
从javascript事件中解雇时,e.keyCode对我来说很麻烦。它与浏览器不一致。 e.which工作得更好。我还认为转换声明更合适。