1

私は 3 つの異なる div を表示したいと考えています。

これを実現するためのコードがあると思っていましたが、機能しておらず、何が間違っているのかを理解するのに苦労しています。

$(document).ready(function() { 

    var cookieRCCS = $.cookie('shownDialog');

    console.log(cookieRCCS);

     // Check if the cookie exists.
    if ( cookieRCCS === null ) {
        console.log("1st if statement " + cookieRCCS);
        $("#hellopanel1").show();

        // set the cookie to value 1
        $.cookie('shownDialog', '1', {expires: 7});

    } 
    else if ( cookieRCCS === 1 ) {
        console.log("2nd if statement " + cookieRCCS);      
        $("#hellopanel2").show();

        // If the cookie exists, take the value
        cookie_value = $.cookie('shownDialog');

        // Convert the value to an int to make sure
        cookie_value = parseInt(cookie_value);

        // Add 1 to the cookie_value
        cookie_value++;

         // Save the incremented value to the cookie
        $.cookie('shownDialog', cookie_value, {expires: 7});

    }
    else if ( cookieRCCS === 2){
        console.log("3rd if statement " + cookieRCCS);

        $("#hellopanel3").show();

        cookie_value = $.cookie('shownDialog');

        cookie_value = parseInt(cookie_value);

        cookie_value++;

        $.cookie('shownDialog', cookie_value, {expires: 7});
    }

    else{
        console.log("4th Time Here");
    }

});
4

2 に答える 2

1

This will solve your problem witha simple and elegant case statement to properly trigger the pieces of code in a cascading fashion:

$(document).ready(function() { 
    var cookieRCCS = (+$.cookie('shownDialog')) + 1;
    $.cookie('shownDialog', cookieRCCS,{expires: 7});

    console.log(cookieRCCS);

    switch (cookieRCCS) {
        case 1:
            console.log("1st if statement " + cookieRCCS);
            $("#hellopanel1").show();
            break;

        case 2:
            console.log("2nd if statement " + cookieRCCS);      
            $("#hellopanel2").show();
            break;

        case 3:
            console.log("3rd if statement " + cookieRCCS);
            $("#hellopanel3").show();
            break;

        default:
            console.log("4th+ Time Here");
    }
});
于 2012-12-05T22:33:08.490 に答える
0

Cookie に文字列を書き込んでいるが、=== で型をチェックしているためです。if 比較を == に変更するか、var cookieRCCS = +$.cookie('shownDialog');それを数値に変換します (つまり、null ではなく cookieRCCS == 0 かどうかを確認する必要があります)。

于 2012-12-05T22:32:25.727 に答える