JavaScript:变量始终返回false

时间:2016-05-27 16:38:57

标签: javascript jquery

我编写了以下脚本来存储变量的值" muted_status"然后将其传递给cookie,但似乎该变量总是具有错误值。

var muted_status = false;
$('#jp_container_1').on("click", function() {
    setTimeout(function() {
        if ($('#jp_container_1').hasClass("jp-state-muted")) {
        var muted_status = true;
        } else {
        var muted_status = false;
        }
    }, 1000);
$.cookie('jp_mute', muted_status, { expires: 7, path: '/'});
});

1 个答案:

答案 0 :(得分:1)

这里有两个问题。首先,您多次重新声明muted_status变量,这意味着您在setTimeout函数中设置的变量与调用{{1}时使用的变量不同}}。其次,最重要的是,$.cookie的调用会在您设置超时后立即同步进行,而$.cookie将在一秒后设置。

也许这样的事情是你的目标?

muted_status

首先将cookie设置为静音,然后可以在一秒钟之后将其设置为其他值。如果您的目的是每秒检查一次静音状态,那么您需要使用function setMutedStatus(mutedStatus) { $.cookie('jp_mute', mutedStatus, { expires: 7, path: '/'}); } setMutedStatus(false); $('#jp_container_1').on("click", function() { setTimeout(function() { var mutedStatus = $('#jp_container_1').hasClass("jp-state-muted"); setMutedStatus(mutedStatus); }, 1000); }); 代替setInterval