jquery cookie, установка значения cookie при каждом посещении?

Я хочу, чтобы отображались 3 разных div 1 div при 1-м посещении 2-й div при 2-м посещении 3-й div при 3-м посещении

Я думал, что у меня есть код, чтобы это произошло, но он не работает, и мне трудно понять, что я делаю неправильно.

$(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");
    }

});

person Xtian    schedule 05.12.2012    source источник


Ответы (2)


Это решит вашу проблему с помощью простого и элегантного оператора case для правильного каскадного запуска фрагментов кода:

$(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");
    }
});
person Steven Moseley    schedule 05.12.2012
comment
Я думаю такой подход, но у меня есть вопрос. Первое посещение, cookieRCCS = 1, второе посещение, cookieRCCS = 1, третье посещение, cookieRCCS = 2. Я ищу, чтобы второе посещение было 2, а третье посещение было 3 и так далее. Любое предложение? - person Xtian; 06.12.2012
comment
2-й визит должен быть 2. Посмотрю на это - person Steven Moseley; 06.12.2012
comment
Похоже, он должен работать, но все еще получает cookieRCCS = 1 при первых двух посещениях. - person Xtian; 06.12.2012
comment
Я только что протестировал его, и он работает так, как я ожидал. 1.. 2.. 3.. 4+ - person Steven Moseley; 06.12.2012

Потому что вы пишете строку в файл cookie, но проверяете тип с помощью ===. Просто измените сравнение if на == или выполните var cookieRCCS = +$.cookie('shownDialog');, которое преобразует его в число (это означает, что вы должны проверить, если cookieRCCS == 0 вместо null

person Brian Cray    schedule 05.12.2012