0

我正在尝试将 cookie 保存在 JavaScript 中,然后再次将它们显示在页面上,但由于某种原因,我的setCookies功能和displayCookies功能无法正常工作。我希望它也能在 1 周后过期。它来自一个表单,当我将它放在 FireFox 的 Web Developer 中时,它说 Reference Error setCookies and displayCookies is not defined。我的 jsfiddle 是:http: //jsfiddle.net/FmXJW/

    function setCookies()
    {
        // this function will set cookies for each field in the reservation form, and set them to expire after one day
        var Name = document.forms[0].txtName.value;
        var Address = document.forms[0].txtAddress.value;
        var City = document.forms[0].txtCity.value;
        var State = document.forms[0].txtState.value;
        var Zip = document.forms[0].txtZip.value;
        var Email = document.forms[0].txtEmail.value;
        var CarType = document.forms[0].txtCarType.value;
        var PickupDate = document.forms[0].txtPickupDate.value;
        var ReturnDate = document.forms[0].txtReturnDate.value;

        var myDate = newDate();
        myDate.setDate(myDate.getDate() + 7);

        document.cookie = "name=" + encodeURIComponent(Name) + "; expires=" + myDate.toUTCString();
        document.cookie = "address=" + encodeURIComponent(Address) + "; expires=" + myDate.toUTCString();
        document.cookie = "city=" + encodeURIComponent(City) + "; expires=" + myDate.toUTCString();
        document.cookie = "state=" + encodeURIComponent(State) + "; expires=" + myDate.toUTCString();
        document.cookie = "zip=" + encodeURIComponent(Zip) + "; expires=" + myDate.toUTCString();
        document.cookie = "email=" + encodeURIComponent(Email) + "; expires=" + myDate.toUTCString();
        document.cookie = "carType=" + encodeURIComponent(CarType) + "; expires=" + myDate.toUTCString();
        document.cookie = "pickupDate=" + encodeURIComponent(PickupDate) + "; expires=" + myDate.toUTCString();
        document.cookie = "returnDate=" + encodeURIComponent(ReturnDate) + "; expires=" + myDate.toUTCString();

        window.alert ("Your reservation has been saved.");

    } // end function setCookies()

    function displayCookies()
    {
        // this function will read the saved cookies, and repopulate the form with the cookie values

        var cookieString = decodeURIComponent(document.cookie);
        var cookieArray = cookieString.split("; ");

        if (document.cookie == 0)
        {
            alert("You have not made a reservation");
        }
        else
        {
            // retrieve each cookie, and display the cookie value in the appropriate form field
        document.forms[0].txtName.value = cookieArray[0].lastIndexOf("=") + 1);
        document.forms[0].txtAddress.value = cookieArray[1].lastIndexOf("=") + 1);
        document.forms[0].txtCity.value = cookieArray[2].lastIndexOf("=") + 1);
        document.forms[0].txtState.value = cookieArray[3].lastIndexOf("=") + 1);
        document.forms[0].txtZip.value = cookieArray[4].lastIndexOf("=") + 1);
        document.forms[0].txtEmail.value = cookieArray[5].lastIndexOf("=") + 1);
        document.forms[0].txtCarType.value = cookieArray[6].lastIndexOf("=") + 1);
        document.forms[0].txtPickupDate.value = cookieArray[7].lastIndexOf("=") + 1);
        document.forms[0].txtReturnDate.value = cookieArray[8].lastIndexOf("=") + 1);
        }

    } // end function displayCookies()
4

1 回答 1

0

您的代码有几个问题:

您没有正确地从 cookie 中存储的不同字段中检索值,您需要使用 slice 来获取正确的部分。

我也猜var myDate = newDate();应该是var myDate = new Date();.

我已经改变了你的小提琴(在这里找到它)并加载了代码<head>,现在它似乎可以正确保存和显示 cookie。

于 2013-04-10T07:14:20.860 回答