阅读与阅读使用javascript的cookie值

时间:2014-01-23 16:25:44

标签: javascript cookies

刚刚离开,我对javascript非常陌生,对于任何愚蠢的评论或提前明显的错误道歉。

这就是我目前正在使用的内容:

<div id="currency_select">
    <form action="/Default.asp?" method="post" name="CurrencyChoice">
        <select onchange="this.form.submit()" name="ER_ID">
            <option value="3">EUR</option>
            <option value="2">GBP</option>
        </select>
        <script type="text/javascript">
            document.forms['CurrencyChoice'].elements['ER_ID'].value = '';
        </script>
    </form>
</div>

我希望读取以下Cookie“ER%5fID”中的值,然后将其插入上面的value=''字段中。

说实话,我很遗憾,因为我不确定读取cookie值的最佳方法是什么,然后将其值插入到我想要的位置。

再次为任何新手的错误道歉。我必须动态学习javascript,而且我必须在几天前开始。

所以今天我花了相当多的时间试图找出我需要的东西,我认为是这样的:

function getCookie(c_name)
{
    var i,x,y,ARRcookies=document.cookie.split(";");

    for (i=0;i<ARRcookies.length;i++)
    {
        x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
        y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
        x=x.replace(/^\s+|\s+$/g,"");
        if (x==c_name)
        {
            return unescape(y);
        }
     }
}

但是我仍然不确定如何在值字段中返回适当的结果?

提前感谢您的任何帮助。

1 个答案:

答案 0 :(得分:0)

对不起,我只是不在乎重写这一点,W3Scools tutorial on cookies非常全面,甚至为您提供了完整的读写cookie功能。

它也是一般JS学习的好资源,所以你一定要查看它。

代码如下:

function setCookie(cname,cvalue,exdays)
{
var d = new Date();
d.setTime(d.getTime()+(exdays*24*60*60*1000));
var expires = "expires="+d.toGMTString();
document.cookie = cname + "=" + cvalue + "; " + expires;
} 

function getCookie(cname)
{
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i=0; i<ca.length; i++)
  {
  var c = ca[i].trim();
  if (c.indexOf(name)==0) return c.substring(name.length,c.length);
  }
return "";
}

用法是:

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

但是你可以在W3Scools自己的网站上阅读更多内容。

编辑:所以这是您特定案例中承诺的全功能样本:

<html>
    <head>
        <meta http-equiv="X-UA-Compatible" content="IE=9" />
        <title>Cookie Example</title>
        <script type="text/javascript">

        //adds the [String].trim() method to the [String] object if missing
        if(!String.prototype.trim) {
          String.prototype.trim = function () {
            return this.replace(/^\s+|\s+$/g,'');
          };
        }

            var cookieName = "ER_ID";

            function setCookie(cname,cvalue,exdays)
            {
                var d = new Date();
                d.setTime(d.getTime()+(exdays*24*60*60*1000));
                var expires = "expires="+d.toGMTString();
                document.cookie = cname + "=" + cvalue + "; " + expires;
            } 

            function getCookie(cname)
            {
                var name = cname + "=";
                var ca = document.cookie.split(';');
                for(var i=0; i<ca.length; i++){
                    var c = ca[i].trim();
                    if (c.indexOf(name)==0) return c.substring(name.length,c.length);
                }
                return "";
            }

            function setOptionFromCookie() {

                var select = document.getElementById('ER_ID'), index, value = getCookie(cookieName);

                index = select.options.length;
                while(index--) {
                    if(select.options[index].value == value) {
                        break;
                    }
                }

                if(index > -1) {
                    select.selectedIndex = index;
                } else {
                    alert('no such value in selection');
                }
            }

            function setValue() {
                var value = document.getElementById('value').value;
                setCookie(cookieName, value, 365);
            }
        </script>
    </head>
    <body>
        The value that will go into the cookie "ER_ID": <input id="value" value="2" />
        <br/>
        <button onclick="setValue()">Set Cookie</button>
        <button onclick="setOptionFromCookie()">Set Option from cookie</button>
        <hr />
        <div id="currency_select">
            <form action="/Default.asp?" method="post" name="CurrencyChoice">
                <select onchange="this.form.submit()" id="ER_ID" name="ER_ID">
                    <option value="1" selected="selected">Select Currency</option>
                    <option value="3">EUR</option>
                    <option value="2">GBP</option>
                </select>
                <script type="text/javascript">

                </script>
            </form>
        </div>
    </body>
</html>

因为我的浏览器中没有这样的cookie,所以我也可以设置cookie。但它应该很容易理解。只需先设置cookie,然后按“从Cookie中设置选项”即可读取cookie并根据值设置选项。