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 キーをもう一度押すと、元の値に戻ります。Enter キーを押してcurrStepいる限り、元の値が表示されます。

さて、はい、このイベントは のためkeyupのものkeydownです。ただし...開発者ツールを開いてコンソール内をクリックしてから元のウィンドウに戻ると、keyupコードは完全に機能します。開発者ツールを開いた後にのみ機能するのはなぜですか?

jQuery 1.11.1 および 1.10.2 でこれを試しました。

編集:currStepsおよびoutNum宣言。

$('#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 に答える