变量函数jquery无法从其他函数中找到值

时间:2015-03-09 12:41:37

标签: jquery

为什么变量check在屏幕上只给出0,即使按下输入字段?

$(function() {
        var check;
        if (!check){ // checking if check is null (changed to 0)
            check = 0;
        }
        $('input').bind('focus',function() {
            if(check == 0){ //if I pressed on an input field change check to 1
                check = 1;  
            }
            if(check == 1){ 
            setTimeout(function(){ 
               // $('#header').css('display','none');
                check = 2; //if check is already 1 change it to 2.
            }, 200);
            }else{ 
                //$('#header').css('display','none');
            }

        });
    $('.check').html(check);
});

脚本保留在div下。 (页面底部)

3 个答案:

答案 0 :(得分:1)

你需要为.check设置html总是在更改check的值时,jquery中没有像棱镜那样的自动数据绑定,请参阅fiddle

$(function() {
        var check;
        if (!check){ // checking if check is null (changed to 0)
            check = 0;
        }
        $('input').bind('focus',function() {
            if(check == 0){ //if I pressed on an input field change check to 1
                check = 1;  
            }
            if(check == 1){ 
            setTimeout(function(){ 
               // $('#header').css('display','none');
                check = 2; //if check is already 1 change it to 2.
                $('.check').html(check);
            }, 200);
            }else{ 
                //$('#header').css('display','none');
            }
 $('.check').html(check);
        });

});

答案 1 :(得分:0)

您的代码很好!您只需 $('.check').html(check); 置于事件监听器函数中,如下所示:

$(function() {
        var check;
        if (!check){ // checking if check is null (changed to 0)
            check = 0;
        }
        $('input').bind('focus',function() {

            if(check == 0){ //if I pressed on an input field change check to 1
                check = 1;  
            }
            if(check == 1){ 
            setTimeout(function(){ 
               // $('#header').css('display','none');
                check = 2; //if check is already 1 change it to 2.

            }, 200);
            }else{ 
                //$('#header').css('display','none');
            }
            $('.check').html(check);
        });

});

答案 2 :(得分:0)

没有小提琴很难猜测,但我的赌注是你没有在焦点事件处理程序中升级$(' .check')的值。您只设置一次(为0)。你还应该添加

$('.check').html(check);

处理bind事件的函数(例如,在else分支之后,也可能在超时处理函数内),因为check变量的值的变化不会自动反映到HTML。