2011-11-24 74 views
0

我有一個javascript cookies的問題,我一直在苦苦掙扎幾天。 我有這個功能(幾乎從W3相同):javascript cookie數組值

function getCookie(c_name) 
{ 
var i,x,y,ARRcookies=document.cookie.split(";"); 
for (i=0;i<ARRcookies.length;i++) 
{ 
    x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("=")); 
    y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1); 
    x=x.replace(/^\s+|\s+$/g,""); 
    if (x.indexOf(c_name)==0) 
    { 
    ar[i]=y; 
    arr[i]=x; 
    } 
    } 
} 

比方說,我已經存儲了兩個cookie具有下列名稱:tablet1taskt1。當我撥打getCookie('table'),ar.length是1.之後,我運行getCookie('task')ar.length是2.這會導致我很多問題。如果我把ar=0;放在函數的起始處什麼都不起作用,就好像函數每次調用它時都會存儲值,而不會擦除舊的值。

============================

var arrCookies = {}; 
function getCookie(c_name) 
{ 
var i,x,y,ARRcookies=document.cookie.split(";"); 
for (i=0;i<ARRcookies.length;i++) 
{ 

    x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("=")); 
    y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1); 
    x=x.replace(/^\s+|\s+$/g,""); 
    if (x.indexOf(c_name)==0) 
    { 
     arrCookies[c_name] = y; 

    } 
    } 
} 

當我這樣做,該arrCookies [c_name]它確實不存儲任何值 - > arrCookies [c_name] .lenght爲零

=============================== ================== 我也做

function getCookie(c_name) 
{ 
var i,x,y,ARRcookies=document.cookie.split(";"); 
for (i=0;i<ARRcookies.length;i++) 
{ 

    x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("=")); 
    y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1); 
    x=x.replace(/^\s+|\s+$/g,""); 
    if (x.indexOf(c_name)==0) 
    { 
     if(c_name=='table'){ 
      xxx[i]=x; 
      xx[i]=y; 
     } 
     else if(c_name=='task'){ 
      arr[i]=x; 
      ar[i]=y; 
     } 
    } 
    } 
} 

和我得到我的第一個腳本同樣的結果

回答

0

,而不是使用AR [i]於循環,可使用AR [J]是這樣的:

j=0; 
for(i=0;...) { 
    if(...) { 
     ar[j]=...; 
     j = j + 1; 
    } 
} 

你看到在你的代碼錯誤了嗎?

+0

我這樣做了,但它沒有「重置」ar,它對腳本沒有影響。我試過 1)ar = 0; - 沒有任何作用 2)ar = []; - 什麼都不做 3)ar = array(); - 什麼都不做 – teo6389

0

改爲使用關聯數組,鍵爲cookie名稱,值爲cookie值。

定義一個陣列這樣您的代碼的頂部:

var arrCookies = {}; 

然後這個代碼在您的功能:

if (x.indexOf(c_name) == 0) 
{ 
    arrCookies[c_name] = y; 
} 

然後稍後閱讀cookie值,例如名爲「任務」的cookie:

var taskValue = arrCookies["task"]; 
+0

我得到如下錯誤「ar [c_name ] is undefined「from firebug – teo6389

+0

因爲你現在需要使用'arrCookies'而不是'ar'。 –

+0

對不起i ment arrCookies – teo6389