• 【原创】JavaScript中的cookie学习


    在javascript中cookie的使用范围还是挺广的,比如它可以用在记住用户名,记住一个拖拽的物体的位置,记住用户选择的网站样式等等。

    我们今天就来好好学习一下js中的cookie,相信大家学习完后一定会觉得原来cookie是这么的简单和强大,那我们开始吧!

    我们先来看下cookie是怎么组成的,看如下代码:

    1 var oDate=new Date();
    2 oDate.setDate(oDate.getDate()+30);
    3 document.cookie="user=blue;expires="+oDate;
    4 document.cookie="pass=123";
    5 alert(document.cookie);

    cookie是document对象下的一个子对象,它是由一些字符串组成的,包括你想要保存的字段,当然还有过期时间。过期时间是可有可无的,在你没有写过期时间的时候cookie会在关闭浏览器的时候就会清除。

    上面这段代码设置了用户名和密码,同时设置了过期时间为一个月,设置过期时间的时候只要在expires后面加上日期对象就行。

    当然上面这段代码过于简单,如果我们要大量使用cookie,或者要读取cookie,删除cookie,设置cookie等,为了让代码更具有封装性和重用性,我们将设置cookie,读取cookie,删除cookie分别封装为一个函数,代码如下:

     1 //设置cookie
     2 function setCookie (name, value, iDay) {
     3     var oDate=new Date();
     4     oDate.setDate(oDate.getDate()+iDay);
     5     document.cookie = name + '=' + value + ';expires=' + oDate;
     6 }
     7 
     8 //获取cookie
     9 function getCookie (name) {
    10     //'username=abc; password=123456; aaa=123; bbb=4r4er'
    11     var arr=document.cookie.split('; ');
    12     var i=0;
    13     
    14     //arr->['username=abc', 'password=123456', ...]
    15     for(i=0;i<arr.length;i++) {
    16         //arr2->['username', 'abc']
    17         var arr2=arr[i].split('=');
    18         
    19         if(arr2[0]==name) {
    20             return arr2[1];
    21         }
    22     }
    23     return '';
    24 }
    25 
    26 //删除cookie
    27 function removeCookie (name) {
    28     setCookie(name, '1', -1);
    29 }

    函数准备好了,很简单,我们来看看具体的实际应用吧。

    当然,如果你要查看效果,一般得把文件放在服务器上进行访问,但是有个例外,就是可以在火狐上直接打开查看。

    一:记住用户名:

    代码如下:

     1 <!DOCTYPE HTML>
     2 <html lang="en-US">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>web表单记住用户名</title>
     6     <script>
     7         window.onload = function () {
     8             var oForm = document.getElementById('form1');
     9             var oUser = document.getElementsByName('user')[0];
    10             var oBtnClear = document.getElementsByTagName('a')[0];
    11             
    12             oForm.onsubmit = function () {
    13                 setCookie('user', oUser.value, 30);
    14             };
    15             
    16             oUser.value = getCookie('user');
    17             
    18             oBtnClear.onclick = function () {
    19                 removeCookie('user');
    20                 oUser.value='';
    21             };
    22         };
    23     </script>
    24 </head>
    25 <body>
    26 <form id="form1" action="http://www.miaov.com/">
    27     用户名:<input type="text" name="user" />
    28     密码:<input type="password" name="pass" />
    29     <input type="submit" value="登录" />
    30     <a href="javascript:;">清除记录</a>
    31 </form>
    32 </body>
    33 </html>

    上面的代码你得引入写好的设置cookie,读取cookie以及删除cookie的函数。

    二:cookie结合拖拽

    代码如下:

     1 <!DOCTYPE HTML>
     2 <html lang="en-US">
     3 <head>
     4     <style>
     5         #div1 {100px; height:100px; background:red; position:absolute;}
     6     </style>
     7     <meta charset="UTF-8">
     8     <title>cookie结合拖拽</title>
     9     <script>
    10         window.onload=function () {
    11             var oDiv = document.getElementById('div1');
    12             var disX = 0;
    13             var disY = 0;
    14             
    15             var x = getCookie('x');
    16             var y = getCookie('y');
    17             
    18             if (x) {
    19                 oDiv.style.left = x + 'px';
    20                 oDiv.style.top = y + 'px';
    21             }
    22             
    23             oDiv.onmousedown = function (ev) {
    24                 var oEvent = ev || event;
    25                 
    26                 disX = oEvent.clientX - oDiv.offsetLeft;
    27                 disY = oEvent.clientY - oDiv.offsetTop;
    28                 
    29                 document.onmousemove = function (ev) {
    30                     var oEvent = ev || event;
    31                     
    32                     oDiv.style.left = oEvent.clientX-disX + 'px';
    33                     oDiv.style.top = oEvent.clientY-disY + 'px';
    34                 };
    35                 
    36                 document.onmouseup = function () {
    37                     document.onmousemove = null;
    38                     document.onmouseup = null;
    39                     
    40                     setCookie('x', oDiv.offsetLeft, 5);
    41                     setCookie('y', oDiv.offsetTop, 5);
    42                 };
    43                 
    44                 return false;
    45             };
    46         };
    47     </script>
    48 </head>
    49 <body>
    50 <div id="div1"></div>
    51 </body>
    52 </html>

    上面的代码同样的要引入写好的cookie设置,读取和删除函数。

    怎么样,是不是很简单呢,cookie的学习就到此为止。大家要是在学习的过程中要是遇到什么困惑可以跟我留言,我会及时的回复大家的。

  • 相关阅读:
    51nod 1416 两点 dfs
    Codeforces Round #424 (Div. 2) A-C
    Codeforces Round #423 (Div. 2) A-C
    Codeforces Round #422 (Div. 2) A-C
    HDU 6077 Time To Get Up 模拟
    51nod 1381 硬币游戏 概率
    51nod 1100 斜率最大 计算几何
    hihocoder 1287 : 数论一·Miller-Rabin质数测试 大质数判定
    字典树
    数论
  • 原文地址:https://www.cnblogs.com/fengyuqing/p/javascript_cookie.html
Copyright © 2020-2023  润新知