Javascript 布尔值不起作用?



我想要一个按钮,1秒后弹出。而且当它没有弹出时,您将无法按下它

$(document).ready(function(){
    var pressed1 = false;
    // Audio-Element 'audioElement' gets declared
    $('#button1').bind("contextmenu",function(e){
    if(!pressed1){
        audioElement.play();
        pressed1 = true;
        $('#button1').css({backgroundImage: "url(img/button_pressed.png)"});
        setTimeout('$("#button1").css({backgroundImage: "url(img/button.png)"}); pressed1 = false;', 1000);
        return false;
    }else{
        return false;
    }
    });
});
按钮

在 1 秒后弹出,"按下 1"设置为"假",但我无法再次按下按钮。即使被 javascript 控制台将"按下 1"设置为"false"!

正如@Mash建议的那样,请尝试以下操作:

$(document).ready(function(){
    var pressed1 = false;
    // Audio-Element 'audioElement' gets declared
    $('#button1').bind("contextmenu",function(e){
    if(!pressed1){
        audioElement.play();
        pressed1 = true;
        $('#button1').css({backgroundImage: "url(img/button_pressed.png)"});
        setTimeout(function() {
            $("#button1").css({backgroundImage: "url(img/button.png)"});
            pressed1 = false;
        }, 1000);
        return false;
    }else{
        return false;
    }
    });
});

我相信,当您将setTimeout与要评估的代码字符串而不是函数一起使用时,代码会使用 eval() 在内部进行评估,它具有不同的范围(无法访问闭包中的变量(。

这是因为变量pressed1是此处所示ready()方法的区域设置,您使用此处所示的setTimeout设置它 false 值设置为名为pressed而不是您在函数中测试的全局变量

最新更新