0

假设这样做是用户输入他们的姓名(使用文本框),一旦他们刷新页面,它将在屏幕上显示他们的姓名,但由于某种原因,它永远不会进入 getCookie 中的 if 语句。(虽然它进入了 get cookie 函数。)


function setCookie() {
    alert(fName.value);
    var user = fName.value;
    alert(user);
    var expiry = new Date();
    expiry.setTime(expiry.getTime() + (1000 * 60 * 60));
    document.cookie = "mydata=" + user + ";" + "expires=" + expiry.toGMTString();
    alert();
}

function getCookie() {
alert(document.cookie.indexOf("mydata") >= 0);
    if (document.cookie.indexOf("mydata") >= 0) {
        alert();
        var cookieString = unescape(document.cookie);
        var list = cookieString.split("=");

        if(list[0] === "myData") {
            var data = list[1].split(",");
            var fname = list[0];
        }

    divisionbar.innerHTML = "Welcome Back" + data;
    }
}
4

1 回答 1

0

您是否在本地测试此代码?如果是这样,我相信您的问题是您的浏览器(很可能是 Chrome)不允许创建本地 cookie。请参阅:Javascript 无法在 Chrome 上创建/识别 cookie

我在 JSFiddle 上以稍微修改的方式尝试了您的代码,它按预期工作:http: //jsfiddle.net/dKjas/

function setCookie(user) {
    alert(user);
    var expiry = new Date();
    expiry.setTime(expiry.getTime() + (1000 * 60 * 60));
    document.cookie = "mydata=" + user + ";" + "expires=" + expiry.toUTCString();
    alert(document.cookie);
}

function getCookie() {

    if (document.cookie.indexOf("mydata") >= 0) {
        var cookieString = unescape(document.cookie);
        var cookies = cookieString.split(";");

        for (var i = 0, len = cookies.length; i < len; i++){
            var data = cookies[i].split('=');
            if (data[0] === 'mydata') {
                // Change divisionbar here.
                alert('Name: ' + data[1]);
            }
        }
    }
}

setCookie('foo');
getCookie();

我真诚地建议您不要使用全局变量来访问 DOM 的值和位,并为这些函数提供一些更具描述性的名称 :-)

于 2013-04-09T23:54:02.823 回答