2008-11-04 78 views

回答

26

被盜從http://www.quirksmode.org/js/cookies.html#script

function createCookie(name,value,days) { 
    if (days) { 
     var date = new Date(); 
     date.setTime(date.getTime()+(days*24*60*60*1000)); 
     var expires = "; expires="+date.toUTCString(); 
    } 
    else var expires = ""; 
    document.cookie = name+"="+value+expires+"; path=/"; 
} 

function readCookie(name) { 
    var nameEQ = name + "="; 
    var ca = document.cookie.split(';'); 
    for(var i=0;i < ca.length;i++) { 
     var c = ca[i]; 
     while (c.charAt(0)==' ') c = c.substring(1,c.length); 
     if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); 
    } 
    return null; 
} 

function eraseCookie(name) { 
    createCookie(name,"",-1); 
} 

var oldCount = parseInt(readCookie('hitCount'), 10) || 0; 
createCookie('hitCount', oldCount + 1, 7); 

正如註釋中所指出的那樣,您應該將Cookie轉換爲int存儲並作爲字符串返回。使用foo++++foo實際上會投給你,但它的安全知道你正在使用什麼:

var x = "5"; // x = "5" (string) 
x += 1;  // x = "51" (string!) 
x += 5;  // x = "515" (string!) 
++x;   // x = 516 (number) 
+0

readCookie返回一個子字符串,你應該把它作爲一個數字時增加1,否則你將有,1,11,111,1111 ... – CMS 2008-11-04 06:58:58

7

大多數的舊Cookie處理功能我已經看到了使用簡單的字符串操作用於存儲檢索值,比如this例如,你可以使用其他的庫,例如cookie-js,小(< 100線)實用程序,用於餅乾訪問。

我個人使用jQuery我的項目,我用的是jQuery Cookie Plugin,這是非常簡單的使用方法:用它

var cookieName = "increment"; 

if ($.cookie(cookieName) == null){ 
    $.cookie(cookieName, 1, { expires: 10 }); 
}else{ 
    var newValue = Number($.cookie(cookieName)) + 1; 
    $.cookie(cookieName, newValue, { expires: 10 }); 
} 
0

最好的辦法就是始終是最簡單的:

function getCookie(name) { 
    return (name = (document.cookie + ';').match(new RegExp(name + '=.*;'))) && name[0].split(/=|;/)[1]; 
} 

// the default lifetime is 365 days 
function setCookie(name, value, days) { 
    var e = new Date; 
    e.setDate(e.getDate() + (days || 365)); 
    document.cookie = name + "=" + value + ';expires=' + e.toUTCString() + ';path=/;domain=.' + document.domain; 
} 

這些功能所期望的價值是一個簡單的字符串,但你可以隨時JSON.stringify它,如果你想或可能做別的事情...

相關問題