我有一个问题,我一直在努力工作几天。 我有这个功能(从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:tablet1
和taskt1
。当我致电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;
}
}
}
}
我的第一个脚本
得到了相同的结果答案 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"];