本帖最后由 tamehuang 于 2013-07-08 16:32:46 编辑

解决方案 »

  1.   


    <script>
        var cookie = "username=abc;userpass=abc";
        var cookie_arr = cookie.split(";"); //拆分cookie
        for (var i = 0; i < cookie_arr.length; i++) //遍历cookie元素
        {
            var cookie_arr_item = cookie_arr[i].split("="); //拆分key和value
            alert(cookie_arr_item[0]); //这个地方弹出的值是正常的key,key里面有username这一项
            alert(cookie_arr_item[0] == "username"); //这个地方弹出的值全部为false
        }
    </script>
    测试正常
      

  2.   

    你是不是COOKIE里的 username 写错了?
      

  3.   


    没错,你这样是没问题。
    但是如果向下面这样,就有问题了,我觉得太奇葩的就是,字符串是可以的,为什么cookie就不行了,都是字符串。<script type="text/javascript">
    document.cookie="username=1231231231";
    var cookie_arr = document.cookie.split(";"); //拆分cookie
    for (var i = 0; i < cookie_arr.length; i++) //遍历cookie元素
    {
        var cookie_arr_item = cookie_arr[i].split("="); //拆分key和value
        alert(cookie_arr_item[0]); //这个地方弹出的值是正常的key,key里面有username这一项
        alert(cookie_arr_item[0] == "username";); //这个地方弹出的值全部为false
    }
    </script>
      

  4.   

    你在alert cookie_arr数组里面数据的时候前后都拼写字符串弹出,怀疑有空格,你直接alert是看不出来的,要前后加点字符串
      

  5.   


    没有空格,我前后加过字符串对比过。
    你看看我在4楼发的代码,直接放到一个html里运行也是false
    没天理了。
      

  6.   

    4楼代码手误多了个分号在"username";这里,纠正一下
      

  7.   


    没错,你这样是没问题。
    但是如果向下面这样,就有问题了,我觉得太奇葩的就是,字符串是可以的,为什么cookie就不行了,都是字符串。<script type="text/javascript">
    document.cookie="username=1231231231";
    var cookie_arr = document.cookie.split(";"); //拆分cookie
    for (var i = 0; i < cookie_arr.length; i++) //遍历cookie元素
    {
        var cookie_arr_item = cookie_arr[i].split("="); //拆分key和value
        alert(cookie_arr_item[0]); //这个地方弹出的值是正常的key,key里面有username这一项
        alert(cookie_arr_item[0] == "username";); //这个地方弹出的值全部为false
    }
    </script>
    alert(cookie_arr_item[0] == "username";); //这个地方弹出的值全部为false这里多了个封号  其他都正常
      

  8.   

    var cookie_arr = document.cookie.split("; ") ; //拆分cookie 这样吧?
      

  9.   

    看看字符串的前后是不是有空格之类的
    alert("#"+cookie_arr_item[0]+"#"); 
      

  10.   

    拆分cookie 这边.split("; ")  加个空格
      

  11.   

    问题找到了,我擦,真意想不到var cookie_arr = document.cookie.split(";");这一行有问题,要改为var cookie_arr = document.cookie.split("; ");不好意思,感谢大家
      

  12.   

    你清理一下浏览器缓存或者重启浏览器和web服务器
      

  13.   

    给你个老外的 cookie 处理程序<script language="javascript"> 
    <!-- begin script 
    // 
    // Cookie Functions -- "Night of the Living Cookie" Version 
    (25-Jul-96) 
    // 
    // Written by: Bill Dortch, hIdaho Design <[email protected]
    // The following functions are released to the public domain. 
    // 
    // This version takes a more aggressive approach to deleting 
    // cookies. Previous versions set the expiration date to one 
    // millisecond prior to the current time; however, this method 
    // did not work in Netscape 2.02 (though it does in earlier and 
    // later versions), resulting in "zombie" cookies that would not 
    // die. DeleteCookie now sets the expiration date to the earliest 
    // usable date (one second into 1970), and sets the cookie's value 
    // to null for good measure. 
    // 
    // Also, this version adds optional path and domain parameters to 
    // the DeleteCookie function. If you specify a path and/or domain 
    // when creating (setting) a cookie**, you must specify the same 
    // path/domain when deleting it, or deletion will not occur. 
    // 
    // The FixCookieDate function must now be called explicitly to 
    // correct for the 2.x Mac date bug. This function should be 
    // called *once* after a Date object is created and before it 
    // is passed (as an expiration date) to SetCookie. Because the 
    // Mac date bug affects all dates, not just those passed to 
    // SetCookie, you might want to make it a habit to call 
    // FixCookieDate any time you create a new Date object: 
    // 
    // var theDate = new Date(); 
    // FixCookieDate (theDate); 
    // 
    // Calling FixCookieDate has no effect on platforms other than 
    // the Mac, so there is no need to determine the user's platform 
    // prior to calling it. 
    // 
    // This version also incorporates several minor coding improvements. 
    // 
    // **Note that it is possible to set multiple cookies with the same 
    // name but different (nested) paths. For example: 
    // 
    // SetCookie ("color","red",null,"/outer"); 
    // SetCookie ("color","blue",null,"/outer/inner"); 
    // 
    // However, GetCookie cannot distinguish between these and will 
    return 
    // the first cookie that matches a given name. It is therefore 
    // recommended that you *not* use the same name for cookies with 
    // different paths. (Bear in mind that there is *always* a path 
    // associated with a cookie; if you don't explicitly specify one, 
    // the path of the setting document is used.) 
    // 
    // Revision History: 
    // 
    // "Toss Your Cookies" Version (22-Mar-96) 
    // - Added FixCookieDate() function to correct for Mac date bug 
    // 
    // "Second Helping" Version (21-Jan-96) 
    // - Added path, domain and secure parameters to SetCookie 
    // - Replaced home-rolled encode/decode functions with Netscape's 
    // new (then) escape and unescape functions 
    // 
    // "Free Cookies" Version (December 95) 
    // 
    // 
    // For information on the significance of cookie parameters, and 
    // and on cookies in general, please refer to the official cookie 
    // spec, at: 
    // 
    // http://www.netscape.com/newsref/std/cookie_spec.html 
    // 
    //****************************************************************** 
    // 
    // "Internal" function to return the decoded value of a cookie 
    // 
    function getCookieVal (offset) { 
    var endstr = document.cookie.indexOf (";", offset); 
    if (endstr == -1) 
    endstr = document.cookie.length; 
    return unescape(document.cookie.substring(offset, endstr)); 

    // 
    // Function to correct for 2.x Mac date bug. Call this function to 
    // fix a date object prior to passing it to SetCookie. 
    // IMPORTANT: This function should only be called *once* for 
    // any given date object! See example at the end of this document. 
    // 
    function FixCookieDate (date) { 
    var base = new Date(0); 
    var skew = base.getTime(); // dawn of (Unix) time - should be 0 
    if (skew > 0) // Except on the Mac - ahead of its time 
    date.setTime (date.getTime() - skew); 

    // 
    // Function to return the value of the cookie specified by "name". 
    // name - String object containing the cookie name. 
    // returns - String object containing the cookie value, or null if 
    // the cookie does not exist. 
    // 
    function GetCookie (name) { 
    var arg = name + "="; 
    var alen = arg.length; 
    var clen = document.cookie.length; 
    var i = 0; 
    while (i < clen) { 
    var j = i + alen; 
    if (document.cookie.substring(i, j) == arg) 
    return getCookieVal (j); 
    i = document.cookie.indexOf(" ", i) + 1; 
    if (i == 0) break; 

    return null; 

    // 
    // Function to create or update a cookie. 
    // name - String object containing the cookie name. 
    // value - String object containing the cookie value. May contain 
    // any valid string characters. 
    // [expires] - Date object containing the expiration data of the 
    cookie. If 
    // omitted or null, expires the cookie at the end of the current 
    session. 
    // [path] - String object indicating the path for which the cookie is 
    valid. 
    // If omitted or null, uses the path of the calling document. 
    // [domain] - String object indicating the domain for which the 
    cookie is 
    // valid. If omitted or null, uses the domain of the calling 
    document. 
    // [secure] - Boolean (true/false) value indicating whether cookie 
    transmission 
    // requires a secure channel (HTTPS). 
    // 
    // The first two parameters are required. The others, if supplied, 
    must 
    // be passed in the order listed above. To omit an unused optional 
    field, 
    // use null as a place holder. For example, to call SetCookie using 
    name, 
    // value and path, you would code: 
    // 
    // SetCookie ("myCookieName", "myCookieValue", null, "/"); 
    // 
    // Note that trailing omitted parameters do not require a placeholder. // 
    // To set a secure cookie for path "/myPath", that expires after the 
    // current session, you might code: 
    // 
    // SetCookie (myCookieVar, cookieValueVar, null, "/myPath", null, 
    true); 
    // 
    function SetCookie (name,value,expires,path,domain,secure) { 
    document.cookie = name + "=" + escape (value) + 
    ((expires) ? "; expires=" + expires.toGMTString() : "") + 
    ((path) ? "; path=" + path : "") + 
    ((domain) ? "; domain=" + domain : "") + 
    ((secure) ? "; secure" : ""); 
    } // Function to delete a cookie. (Sets expiration date to start of 
    epoch) 
    // name - String object containing the cookie name 
    // path - String object containing the path of the cookie to 
    delete. This MUST 
    // be the same as the path used to create the cookie, or 
    null/omitted if 
    // no path was specified when creating the cookie. 
    // domain - String object containing the domain of the cookie to 
    delete. This MUST 
    // be the same as the domain used to create the cookie, or 
    null/omitted if 
    // no domain was specified when creating the cookie. 
    // 
    function DeleteCookie (name,path,domain) { 
    if (GetCookie(name)) { 
    document.cookie = name + "=" + 
    ((path) ? "; path=" + path : "") + 
    ((domain) ? "; domain=" + domain : "") + 
    "; expires=Thu, 01-Jan-70 00:00:01 GMT"; 

    } // 
    // Examples 
    // 
    var expdate = new Date (); 
    FixCookieDate (expdate); // Correct for Mac date bug - call only once 
    for given Date object! 
    expdate.setTime (expdate.getTime() + (24 * 60 * 60 * 1000)); // 24 hrs 
    from now 
    SetCookie ("ccpath", "http://www.hidaho.com/colorcenter/", expdate); 
    SetCookie ("ccname", "hIdaho Design ColorCenter", expdate); 
    SetCookie ("tempvar", "This is a temporary cookie."); 
    SetCookie ("ubiquitous", "This cookie will work anywhere in this 
    domain",null,"/"); 
    SetCookie ("paranoid", "This cookie requires secure communications", 
    expdate,"/",null,true); 
    SetCookie ("goner", "This cookie must die!"); 
    document.write (document.cookie + " 
    "); 
    DeleteCookie ("goner"); 
    document.write (document.cookie + " 
    "); 
    document.write ("ccpath = " + GetCookie("ccpath") + " 
    "); 
    document.write ("ccname = " + GetCookie("ccname") + " 
    "); 
    document.write ("tempvar = " + GetCookie("tempvar") + " 
    "); 
    // end script --> 
    </script>