我想利用JS来新建cookie,要求存储的形式能像对象那样,有标识,可以任意添加属性,可以修改某条数据。
另外问一下一个网站是不是不能存在多个cookie呢?

解决方案 »

  1.   

    cookie就是一个http头部的字符串,具体的大小限制与浏览器相关。
    转一个类:  String.prototype.Trim = function()
      {
          return this.replace(/^\s+/g,"").replace(/\s+$/g,"");
      }
      
      function JSCookie()
      {
          this.GetCookie = function(key)
          {
            var cookie = document.cookie;
            var cookieArray = cookie.split(';');
            var getvalue = "";
            for(var i = 0;i<cookieArray.length;i++)
            {
                
                if(cookieArray[i].Trim().substr(0,key.length) == key)
                {
                    getvalue = cookieArray[i].Trim().substr(key.length + 1);
                    break;
                }
            }        return getvalue;
        };
        this.GetChild = function(cookiekey,childkey)
        {
            var child = this.GetCookie(cookiekey);
            var childs = child.split('&');
            var getvalue = "";
            
            for(var i = 0;i < childs.length;i++)
            {
                if(childs[i].Trim().substr(0,childkey.length) == childkey)
                {
                    getvalue = childs[i].Trim().substr(childkey.length + 1);
                    break;
                }
            }
            return getvalue;
        };
        this.SetCookie = function(key,value,expire,domain,path)
        {
            var cookie = "";
            if(key != null && value != null)
                cookie += key + "=" + value + ";";
            if(expire != null)
                cookie += "expires=" + expire.toGMTString() + ";";
            if(domain != null)
                cookie += "domain=" + domain + ";";
            if(path != null)
                cookie += "path=" + path + ";";
            document.cookie = cookie;
        };
        this.Expire = function(key)
        {
            expire_time = new Date();
            expire_time.setFullYear(expire_time.getFullYear() - 1);
            var cookie = " " + key + "=e;expires=" + expire_time + ";"
            document.cookie = cookie;
        }
    }
     用法:
    一、设置cookie
    var cookie = new JSCookie();
    //普通设置
    cookie.SetCookie("key1","val1");//过期时间为一年
    var expire_time = new Date();
    expire_time.setFullYear(expire_time.getFullYear() + 1);
    cookie.SetCookie("key2","val2",expire_time);//设置域及路径,带过期时间
    cookie.SetCookie("key3","val3",expire_time,".cnblogs.com","/");//设置带子键的cookie,子键分别是k1,k2,k3
    cookie.SetCookie("key4","k1=1&k2=2&k3=3");二、读取cookie
    //简单获取
    cookie.GetCookie("key1");
    cookie.GetCookie("key2");
    cookie.GetCookie("key3");
    cookie.GetCookie("key4");
    //获取key4的子键k1值
    cookie.GetChild("key4","k1");三、删除
    cookie.Expire("key1");
    cookie.Expire("key2");
    cookie.Expire("key3");
    cookie.Expire("key4");
      

  2.   

    +也可以参考:http://blog.csdn.net/IBM_hoojo/archive/2010/08/04/5787765.aspx
      

  3.   

    Cookie 只有4k大小,只能存'字符串',4k如果不够用,用flash来扩展(默认100K)
      

  4.   

    共享一个我得
    Cookie(name,value)   //创建+修改
    Cookie(name,null)    //删除
    Cookie(name)   //获取function Cookie(name,value,options)
    {
    if(typeof value!="undefined")
    {
    options=options||{};
    if(value===null)
    {
    value='';
    options.expires=-1;//设置失效时间
    }
    var expires='';
    //判断类型是number,分别设置时间
    if(options.expires&&(typeof options.expires=='number'||options.expires.toUTCString))
    {
    var date;
    if(typeof options.expires=='number')
    {
    //设置时间格式,把天转换为毫秒添加倒时间对象
    date=new Date();
    date.setTime(date.getTime()+(options.expires*24*60*60*1000));
    }
    else
    {
    date=options.expires;
    }
    }
    var path=options.path?';path='+options.path:'';  //路径
    var domain=options.domain?';domain='+options.domain:'';  //设置域
    var secure=options.secure?';secure':''; //安全措施,true直接设置
    //把所有字符串存入数组,然后调用Join()方法转换为字符串  并写入cookie
    document.cookie=[name,'=',encodeURIComponent(value),expires,path,domain,secure].join('');
    }
    else
    {
    var CookieValue=null;
    if(document.cookie&&document.cookie!='')
    {
    var cookie=document.cookie.split(';');
    for(var i=0;i<cookie.length;i++)
    {
    //var cookie=(cookie[i]||"").replace(/^\s+|\s+$/g,"");
    var cookie=cookie[i];
    if(cookie.substring(0,name.length+1)==(name+'='))
    {
    CookieValue=decodeURIComponent(cookie.substring(name.length+1));
    break;
    }
    }
    }
    return CookieValue;
    }
    }
      

  5.   

    上面少一句话:expires = '; expires=' + date.toUTCString();
    添加在
    else
    {
        date=options.expires;
    }
    后面