1

每次按下 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并显示数组中的下一个值。但是,当我再次按 Enter 时,它会恢复为 的原始值currStep,只要按住 Enter 键,它就会显示原始值。

现在,是的,这个事件是为了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)
 ...
4

1 回答 1

1

我允许自己写一些你缺少的变量定义: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")
            }
        }
    });    
});

你的问题仍然存在于上层演示中吗?

于 2014-07-26T22:17:27.720 回答