饼干。我究竟做错了什么?

时间:2013-04-09 22:05:14

标签: javascript html

这是假设用户输入他们的名字(使用文本框),一旦他们刷新页面,它将在屏幕上显示他们的名字,但由于某种原因,它永远不会进入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;
    }
}

1 个答案:

答案 0 :(得分:0)

您是否在本地测试此代码?如果是这样,我相信您的问题是您的浏览器(很可能是Chrome)不允许创建本地Cookie。请参阅:Javascript fails to create/recognize cookies on Chrome

我在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的值和位,还要为这些函数提供一些更具描述性的名称: - )