Javascript jquerykeydown函数
我试图让span元素中的文本根据使用Jquery中的keydown函数按下的键进行更改 脚本运行良好,直到我的所有if语句都运行为止 我的脚本示例:Javascript jquerykeydown函数,javascript,jquery,Javascript,Jquery,我试图让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){ $('spa
$(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');
}
});
}
我有两个不同的控制台日志,按下一个键时应该会报告这些日志。一个是当按下任何键时,另一个是当按下特定键时(目前仅在a、b和c上)
有人能告诉我我做错了什么以及为什么它不能工作吗?您正在通过设置其
keycode
来覆盖e
使var ee=69代码>或者什么的
您的问题是您正在覆盖e
的含义。将名称切换为evt
或其他名称
此外,您应该使用switch
语句,而不是所有那些if
s语句
$(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元素以查看结果
e、 事实证明,当从javascript事件触发时,keyCode对我来说很麻烦。浏览器之间不一致。e、 这样效果更好。我还认为switch语句更合适
正如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);
}
});
});
}
希望这能有所帮助。在Chrome中,特定的代码对我很有效:您的代码在Chrome、IE和FF中运行良好。你用的是Mac还是PC?有时,操作系统之间的键码(如右键或左键)可能不同。您可以尝试使用e.which
而不是e.keyCode
他在哪里设置e?他只是在和它作比较。也许他在这篇文章之后更新了?@DaveStein检查他发布的JSFIDLE。他为每个字母设置一个var,比如varq=81代码>等等。他没有在这里发布这部分内容,这就是为什么它看起来是有效的。我编辑了这篇文章,以便在代码中可以看到变量的值