日期:2014-05-16  浏览次数:20381 次

html的JS操作cookie,为什么无法删除(设置过期),以及无法重复赋值的?
document.cookie="dq1="+dq1;
首先是这样赋值的,这里没问题,赋值完后跳转页面(当前页面是jsp,跳转到的目标页面是html页面,因为功能需求,地址栏不能有传参,session以及application在html页面都无法操作,只好用cookie了)
这个时候在HTML页面是这样获得cookie的
获取cookie字符串 
var strCookie=document.cookie;
将多cookie切割为多个名/值对 
var arrCookie=strCookie.split("; "); 

for(var i=0;i<arrCookie.length;i++){ 
     var arr=arrCookie[i].split("=");
     if("dq1"==arr[0]){ 
         dq1=arr[1]; 
     }.....很多赋值
     delCookie(arr[0]);
}
function delCookie(name)  
{  
var exp = new Date();  
exp.setTime(exp.getTime() - 1);  
document.cookie= name + "=;expires="+exp.toGMTString();  


并返回它的值 然后遍历切割,把取出来的值赋到相应的变量里(每当每次遍历结束的最后的时候我有设置过期,可是貌似没用..del方法原先是有getCookie的,最后一句也是name+value可是还是没法删除我就把value删除了可还是不行)

这个是设置过期无效..

如果我重复赋值的话..依然无效..
比如
JSP页面 赋值document.cookie="dq1="+dq1; 跳转后
HTML页面赋值 var zz=1; document.cookie="dq1="+zz();
这个时候我输出alert(document.cookie);的时候 就会有2个 dq1...很是烦恼...求解

------解决方案--------------------
A页面:
document.cookie="dq1=dq1";
document.cookie="dq2=dq2";
document.cookie="dq3=dq3";
document.cookie="dq4=dq4";

B页面:

var strCookie=document.cookie;
var arrCookie=strCookie.split(";"); 
function delCookie(name)  
{  
var exp = new Date();  
exp.setTime(exp.getTime() - 1);  
document.cookie= name + "=;expires="+exp.toGMTString();  
}  
for(var i=0;i<arrCookie.length;i++){ 
  var arr=arrCookie[i].split("=");
  if("dq1"==arr[0]){ 
  dq1=arr[1]; 
  }
  delCookie(arr[0]);
}

火狐下 测试可以