jQuery keyup工作不正确

jQuery keyup working incorrectly

本文关键字:不正确 工作 keyup jQuery      更新时间:2023-09-26

我试图使一个整数变量增量每次按下Enter键。然后使用该变量从数组中输出一个值。

$(document).keyup(function(e) {
            if (e.keyCode == 13) {
                console.log(++currSteps);
                $('#output').text(outNum[currSteps])
                if(outNum[currSteps] % 2 == 0){
                    $('body').css("background", "#4b84e5")
                }
                else if(outNum[currSteps] == 1){
                    $('body').css("background", "#9dd622")
                }
                else{
                    $('body').css("background", "#d16323")
                }
            }
        });    

实际按Enter时出现问题。在第一次按下时,它正常工作,并增加变量currSteps并显示数组中的下一个值。但是,当我再次按回车键时,它会恢复到原来的currStep值,只要按回车键,它就会显示原来的值。

现在,是的,这个事件是针对keyup的,因此在keydown上事情会奇怪地工作是有道理的。然而……如果我打开开发人员工具并在控制台上单击,然后返回到原始窗口,keyup代码就可以完美地工作。为什么这只在开发人员工具打开后才工作?

我已经在jQuery 1.11.1和1.10.2上尝试过了。

编辑:currStepsoutNum声明

$('#in').click(function(){
            $('#output').empty();
            $('#steps').empty();
            var steps = 0
            currSteps = 0
            var inNum = parseInt($('#input').val());
            var col = '#ffffff'
            outNum = []
            outNum.push(inNum)
 ...

我允许自己写一点您丢失的变量定义:JSFiddle

$(document).ready(function() {
    var currSteps = 0;
    var outNum = { 0: 0, 1: 1, 2: 2 };
    $(document).keyup(function(e) {
        if (e.keyCode == 13) {
            console.log(++currSteps);
            $('#output').val(outNum[currSteps] + ' ' + currSteps)
            if(outNum[currSteps] % 2 == 0){
                $('body').css("background", "#4b84e5")
            }
            else if(outNum[currSteps] == 1){
                $('body').css("background", "#9dd622")
            }
            else{
                $('body').css("background", "#d16323")
            }
        }
    });    
});

上样件的问题仍然存在吗?