Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquerykeydown函数_Javascript_Jquery - Fatal编程技术网

Javascript jquerykeydown函数

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

我试图让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');
        }
    });
}
我有两个不同的控制台日志,按下一个键时应该会报告这些日志。一个是当按下任何键时,另一个是当按下特定键时(目前仅在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,比如var
q=81等等。他没有在这里发布这部分内容,这就是为什么它看起来是有效的。我编辑了这篇文章,以便在代码中可以看到变量的值