javascript设置和获取cookie的方法实例详解


Posted in Javascript onJanuary 05, 2016

本文实例讲述了javascript设置和获取cookie的方法。分享给大家供大家参考,具体如下:

1. 设置cookie

function setCookie(cookieName,cookieValue,cookieExpires,cookiePath)
{
  cookieValue = escape(cookieValue);//编码latin-1
  if(cookieExpires=="")
  {
    var nowDate = new Date();
    nowDate.setMonth(nowDate.getMonth()+6);
    cookieExpires = nowDate.toGMTString();
  }
  if(cookiePath!="")
  {
    cookiePath = ";Path="+cookiePath;
  }
  document.cookie= cookieName+"="+cookieValue+";expires="+cookieExpires+cookiePath;
}

2. 获取cookie

function getCookieValue(cookieName)
{
  var cookieValue = document.cookie;
  var cookieStartAt = cookieValue.indexOf(""+cookieName+"=");
  if(cookieStartAt==-1)
  {
    cookieStartAt = cookieValue.indexOf(cookieName+"=");
  }
  if(cookieStartAt==-1)
  {
    cookieValue = null;
  }
  else
  {
    cookieStartAt = cookieValue.indexOf("=",cookieStartAt)+1;
    cookieEndAt = cookieValue.indexOf(";",cookieStartAt);
    if(cookieEndAt==-1)
    {
      cookieEndAt = cookieValue.length;
    }
    cookieValue = unescape(cookieValue.substring(cookieStartAt,cookieEndAt));//解码latin-1
  }
  return cookieValue;
}

例子:

<!doctype html>
<html>
<head>
<title>cookie</title>
<meta charset="utf-8">
<script language="javascript" type="text/javascript">
  //获取cookie
   function getCookieValue(cookieName)
  {
    var cookieValue = document.cookie;
    var cookieStartAt = cookieValue.indexOf(""+cookieName+"=");
    if(cookieStartAt==-1)
    {
      cookieStartAt = cookieValue.indexOf(cookieName+"=");
    }
    if(cookieStartAt==-1)
    {
      cookieValue = null;
    }
    else
    {
      cookieStartAt = cookieValue.indexOf("=",cookieStartAt)+1;
      cookieEndAt = cookieValue.indexOf(";",cookieStartAt);
      if(cookieEndAt==-1)
      {
        cookieEndAt = cookieValue.length;
      }
      cookieValue = unescape(cookieValue.substring(cookieStartAt,cookieEndAt));//解码latin-1
    }
    return cookieValue;
  }
  //设置cookie
  function setCookie(cookieName,cookieValue,cookieExpires,cookiePath)
  {
    cookieValue = escape(cookieValue);//编码latin-1
    if(cookieExpires=="")
    {
      var nowDate = new Date();
      nowDate.setMonth(nowDate.getMonth()+6);
      cookieExpires = nowDate.toGMTString();
    }
    if(cookiePath!="")
    {
      cookiePath = ";Path="+cookiePath;
    }
    document.cookie= cookieName+"="+cookieValue+";expires="+cookieExpires+cookiePath;
  }
  //页面加载时间处理函数
  function window_onload()
  {
    var userNameElem = document.getElementById("userName");//用户名输入框对象
    var passwordElem = document.getElementById("password");//密码输入框对象
    var currUserElem = document.getElementById("currUser");//复选框对象
    var currUser = getCookieValue("currUser");
    if(currUser!=null)
    {
      userNameElem.value=currUser;
      currUserElem.checked = true;
    }
    if(userNameElem.value!="")
    {
      passwordElem.focus();//密码输入框获得焦点
    }
    else
    {
      currUserElem.focus();//用户名输入框获得焦点
    }
  }
  //表单提交处理
  function login()
  {
    var userNameElem = document.getElementById("userName");
    var passwordElem = document.getElementById("password");
    var currUserElem = document.getElementById("currUser");
    if(userNameElem.value=="" || passwordElem.value=="")
    {
      alert("用户名或密码不能为空!");
      if(userNameElem.value=="")
      {
        userNameElem.focus();//用户名输入框获得焦点
      }
      else
      {
        passwordElem.focus();//密码输入框获得焦点
      }
      return false;
    }
    if(currUserElem.checked)
    {
      setCookie("currUser",userNameElem.value,"","");//设置cookie
    }
    else
    {
      var nowDate = new Date();//当前日期
      nowDate.setMonth(nowDate.getMonth()-2);//将cookie的过期时间设置为之前的某个日期
      cookieExpires = nowDate.toGMTString();//过期时间的格式必须是GMT日期的格式
      setCookie("userName","",cookieExpires,"");//删除一个cookie只要将过期时间设置为过去的一个时间即可
    }
    return true;
  }
</script>
<style type="text/css">
  div{
    font-size:12px;
  }
</style>
</head>
<body onload="window_onload()">
<div>
<form id="loginForm" onsubmit="return login()">
用户名:<input type="text" id="userName"><br>
密 码:<input type="password" id="password">
<input type="checkbox" id="currUser">记住用户名<br>
<input type="submit" value="登录">
</form>
</div>
</body>
</html>

注意:

由于google Chrome浏览器为了安全只支持online-cookie,所以在本地测试时是没有效果的,需要上传到服务器试一下。

更多关于JavaScript操作cookie相关内容可查看本站专题:《JavaScript 操作 cookie相关知识汇总》及《jQuery的cookie操作技巧总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
判断是否输入完毕再激活提交按钮
Jun 26 Javascript
js Function类型
Dec 04 Javascript
javascript学习笔记(十五) js间歇调用和超时调用
Jun 20 Javascript
修改file按钮的默认样式实现代码
Apr 23 Javascript
javascript实现textarea中tab键的缩排处理方法
Jun 26 Javascript
javascript比较两个日期相差天数的方法
Jul 24 Javascript
JS实现兼容性好,自动置顶的淘宝悬浮工具栏效果
Sep 18 Javascript
Vue-CLI3.x 设置反向代理的方法
Dec 06 Javascript
JS阻止事件冒泡的方法详解
Aug 26 Javascript
小程序选项卡以及swiper套用(跨页面)
Jun 19 Javascript
使用Element的InfiniteScroll 无限滚动组件报错的解决
Jul 27 Javascript
利用 Chrome Dev Tools 进行页面性能分析的步骤说明(前端性能优化)
Feb 24 Javascript
javascript简单比较日期大小的方法
Jan 05 #Javascript
js与jQuery实现checkbox复选框全选/全不选的方法
Jan 05 #Javascript
简述jQuery ajax的执行顺序
Jan 05 #Javascript
JavaScript类型系统之正则表达式
Jan 05 #Javascript
jQuery中ajax的load()与post()方法实例详解
Jan 05 #Javascript
jQuery Mobile弹出窗、弹出层知识汇总
Jan 05 #Javascript
AngularJS 使用$sce控制代码安全检查
Jan 05 #Javascript
You might like
PHP创建文件,并向文件中写入数据,覆盖,追加的实现代码
2016/03/25 PHP
Nigma vs AM BO3 第二场2.13
2021/03/10 DOTA
JavaScript 调试器简介
2009/02/21 Javascript
JS获取dom 对象 ajax操作 读写cookie函数
2009/11/18 Javascript
windows系统下简单nodejs安装及环境配置
2013/01/08 NodeJs
JavaScript打印iframe内容示例代码
2013/08/20 Javascript
javascript 数组操作详解
2015/01/29 Javascript
jQuery实现tab标签自动切换的方法
2015/02/28 Javascript
jQuery中iframe的操作(点击按钮新增窗口)
2016/04/20 Javascript
第一次接触神奇的Bootstrap导航条
2016/08/09 Javascript
微信小程序 获取设备信息 API实例详解
2016/10/02 Javascript
微信小程序 解决请求服务器手机预览请求不到数据的方法
2017/01/04 Javascript
微信浏览器禁止页面下拉查看网址实例详解
2017/06/28 Javascript
vue中监听路由参数的变化及方法
2019/12/06 Javascript
JavaScript 监听组合按键思路及代码实现
2020/07/28 Javascript
详解微信小程序「渲染层网络层错误」的解决方法
2021/01/06 Javascript
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
Django框架中处理URLconf中特定的URL的方法
2015/07/20 Python
Python中循环后使用list.append()数据被覆盖问题的解决
2018/07/01 Python
Django框架的中的setting.py文件说明详解
2018/10/15 Python
解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题
2018/10/17 Python
对python中xlsx,csv以及json文件的相互转化方法详解
2018/12/25 Python
对python:循环定义多个变量的实例详解
2019/01/20 Python
Django values()和value_list()的使用
2020/03/31 Python
Python collections.deque双边队列原理详解
2020/10/05 Python
英国网上花店:Bunches
2016/11/29 全球购物
Java平台和其他软件平台有什么不同
2015/06/05 面试题
暑期培训随笔感言
2014/03/10 职场文书
医学生毕业自我鉴定
2014/03/26 职场文书
2014年维修电工工作总结
2014/11/20 职场文书
运动会广播稿20字
2015/08/19 职场文书
学校体育节班级口号
2015/12/25 职场文书
Mysql中有关Datetime和Timestamp的使用总结
2021/12/06 MySQL
redis复制有可能碰到的问题汇总
2022/04/03 Redis
Python绘制散乱的点构成的图的方法
2022/04/21 Python
python三子棋游戏
2022/05/04 Python