2016-05-27 7 views
-1

変数 "muted_status"の値を格納してからクッキーに渡すためのスクリプトを作成しましたが、変数には常にfalse値があるようです。JavaScript:変数は常にfalseを返します

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

ここには2つの問題があります。まず、muted_status変数を複数回宣言し直しています。つまり、setTimeout関数で設定した変数が、$.cookieの呼び出しで使用された変数と同じではありません。第二に、そして最も重要なのは、$.cookieの呼び出しは、タイムアウトを設定した直後に同期して起きているのに対して、muted_statusは1秒後に設定されています。

おそらくこのようなものがあなたのために起こっているのでしょうか?

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); 
}); 

これは、クッキーをミュートに設定することから始まりますが、1秒後に何かに設定することができます。 1秒ごとにミュート状態を確認する場合は、setTimeoutの代わりにsetIntervalを使用します。

関連する問題