javascript cookie数组值

时间:2011-11-24 07:46:36

标签: javascript arrays cookies

我有一个问题,我一直在努力工作几天。 我有这个功能(从w3几乎相同):

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]它不存储任何值 - &gt; 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;
        }
    }
  }
}

我的第一个脚本

得到了相同的结果

2 个答案:

答案 0 :(得分:0)

而不是在循环中使用ar [i],使用这样的ar [j]:

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

你看到代码中的错误吗?

答案 1 :(得分:0)

使用关联数组,键是cookie名称,值是cookie值。

在代码之上定义一个这样的数组:

var arrCookies = {};

然后在你的函数中使用此代码:

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

然后稍后读取cookie值,例如名为“任务”的cookie:

var taskValue = arrCookies["task"];