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 に答える