使用cookie作为计数器?

时间:2012-08-02 16:28:47

标签: javascript jquery

我正在尝试使用jQuery Cookie插件创建和存储cookie。我想cookie只是一个普通的柜台。我需要它是一个cookie,因为我想在页面刷新时保持计数器运行。当某些条件为真时,我希望将1添加到cookie值中。看起来很简单,但我在使用插件时遇到了麻烦。

我已经创建了这样的cookie:

$(document).ready(function(){
    $.cookie("cookieValue", "0", { expires: 7 , path: '/' }); 
});

我想要实现的一个小例子:

if (/*some condition*/) {
    cokieValue++;
}

当条件为真时,这不起作用,cookie值保持为0.我也尝试过:

$(document).ready(function(){
    $.cookie("cookieValue", "0", { expires: 7 , path: '/' });  
    var cookieValue = parseInt($.cookie("cookieValue"));

    if (/*some condition*/) {
        cookieValue++;
    } 
});

这也不起作用 - cookieValue保持为0.有关如何实现此目的的任何建议吗?

2 个答案:

答案 0 :(得分:3)

在用零更新之前,您需要检查它是否存在。

if( $.cookie('cookieValue') === null ) { 
    $.cookie( 'cookieValue', '0',  { expires: 7, path: '/' } );
}

您需要在更新后保存该值。

$.cookie("cookieValue", cookieValue, { expires: 7 , path: '/' })

所以最终的代码看起来像是

$(function(){  //shortcut for document.ready
    var cookieVal = $.cookie("cookieValue");  //grab the cookie
    if( cookieVal === null ) {   //see if it is null
        $.cookie( 'cookieValue', '0',  { expires: 7, path: '/' } );  //set default value
        cookieVal = 0;  //set the value to zero
    }
    var cookieValue = parseInt(cookieVal,10);  //convert it to number

    if (/*some condition*/) {
        cookieValue++;  //increment the value
        $.cookie("cookieValue", cookieValue, { expires: 7 , path: '/' }); //save new value
    } 
});

答案 1 :(得分:-1)

$(document).ready(function(){
    $.cookie("cookieValue", "0", { expires: 7 , path: '/' });  
    var cookieValue = parseInt($.cookie("cookieValue"));

    if (/*some condition*/) {
        cookieValue++;
        $.cookie("cookieValue", cookieValue, { expires: 7 , path: '/' });
    } 
});

要用新值设置cookie。