2012-01-31 66 views
1

一個cookie一定是15年我設置使用JavaScript cookie的值...如何將值附加到在JavaScript

document.cookie = 'key=value'; //got that ... 

如何添加具有相同鍵的另一個值?我想創建一個值列表(page = 1,34,48,59 ...),然後我可以讀取並循環。或者,還有更好的方法?

+0

您需要重寫Cookie附加價值。您可以使用分隔符來分隔值 – 2012-01-31 06:06:07

回答

4

指定所有一旦如:

var value = ['1', '2', '3', 'n'].join(','); 
document.cookie = 'key=' + value; 

其中'key=' + value現在是:

key=1,2,3,n 

或者,先讀取cookie的數據,並添加新的數據:

var keycookie = // read your cookie here 
keycookie += 'new stuff'; 
document.cookie = 'key=' + keycookie; 
+0

使用'call'而不是'['1','2','3','n']的好處是什麼join(',')'? – 2012-01-31 06:30:48

+0

@MattGreer:這一直是我的習慣,因爲它看起來乾淨而簡潔,所以更新了你所提出的內容。 – Sarfraz 2012-01-31 06:34:30

+0

,以便將值3附加到已具有「1,2」值的我的cookie「key」中,我必須讀取完整的cookie,循環它以提取「key」的值,添加「3」和然後再寫「鑰匙」?沒有快捷方式將值附加到現有密鑰? – MotoTribe 2012-01-31 17:37:54

1
// name is cookie name 
// value is cookie value 
// days is life time of it 
function setCookie(name,value,days) { 
var date = new Date(); 
date.setTime(date.getTime() + (1000 * 60 * 60 * 24 * parseInt(days))); 

parts = $.cookie(name); 
if (!parts || parts == 'undefined') { 
    $.cookie(name, value, {path: '/', expires: date }); 
    return; 
} 

parts = parts.split(","); 
if (parts.length > 0) { 
    // search same item and delete 
    // if already have , delete it 
    for (var i=0; i<parts.length; i++) { 
     if (value == parts[i]) { 
      parts.splice(i, 1); 
     } 
    } 
    parts.push(value); 

    // if over 50, just do 50 
    newparts = []; 
    if (parts.length > 50) { 
     for (var i=parts.length - 50; i<parts.length; i++) { 
      newparts.push(parts[i]); 
     } 
    } 
    else { 
     newparts = parts; 
    } 
    $.cookie(name, newparts.join(","), {path: '/', expires: date }); 
} 
else { 
    $.cookie(name, $(this).attr("id"), {path: '/', expires: date }); 
}};