0

JavaScriptでCookieを作成して取得しようとしています。Google Chrome を使用していますが、以下のコードを実行すると、ページのリロード後に Cookie が保存されません。

以下は私のコードです

   <html>
       <title> Cookies </title>
         <body onload="checkCookie()">
         <script type="text/javascript">

        function getCookie(c_name){
            var c_value = document.cookie;
            var c_start = c_value.indexOf(" " + c_name + "=");
            if (c_start == -1){
                c_start = c_value.indexOf(c_name + "=");
            }
            if (c_start == -1){
                c_value = null;
            }else{
                c_start = c_value.indexOf("=", c_start) + 1;
                var c_end = c.value.indexOf(";", c_start);

            if (c_end ==-1){
                c_end = c_value.lenth;
            }
            c_value = unescape(c_value.substring(c_start,c_end));
            }
            return c_value;
        }

        function setCookie(c_name,value,exdays){
            var exdate = new Date();
            exdate.setDate(exdate.getDate() + exdays);
            var c_value = escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
            document.cookie=c_name + "=" + c_value;
        }

        function checkCookie(){
            var username = getCookie("username");
            if(username!=null && username!=""){
                alert("Welcome again " + username);
            }else{
                username=prompt("Please enter your name:","");
                if(username!=null && username!=""){
                    setCookie("username",username,365);
                    document.write(username);
                }


            }
        }

    </script>
<body>

なぜ機能しないのかわかりません。ここから文字通りコピーして貼り付けましたhttp://www.w3schools.com/js/js_cookies.asp

4

1 に答える 1

1

楽しいデバッグでした。W3Schoolsに感謝します。次回は、コンソールとMDNを使用することをお勧めします

かなり簡単に確認できる最初のバグは次のとおりです。

c_end = c_value.lenth; //

次のようにする必要があります。

c_end = c_value.length;//

コードを使用すると、コンソールのアラートに気付くでしょうc is not defined.

OK 関数を 1 つずつ実行すると、実行時にエラーが発生することがわかりますgetCookie

よし検査!

function getCookie(){
//Weird use if getIndex
//Someone forgot about regex
//..
 c_end = c.value.length; // AHA!!!
}

次のようにする必要があります。

c_end = c_value.length;

あなたの他の問題については

setCookienew date()すぐに意味する有効期限に使用します

使用する:

function setCookie(c_name,value,exdays){
            var exdate = exdays;
/....
}

楽しみ。

于 2013-07-07T22:30:37.100 に答える