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 相关文章推荐
jQuery幻灯片带缩略图轮播效果代码分享
Aug 17 Javascript
JS实现浏览器状态栏显示时间的方法
Oct 27 Javascript
Vue数据驱动模拟实现1
Jan 11 Javascript
JavaScript实现二分查找实例代码
Feb 22 Javascript
vuejs开发组件分享之H5图片上传、压缩及拍照旋转的问题处理
Mar 06 Javascript
Bootstrap按钮组简单实现代码
Mar 06 Javascript
easyui简介_动力节点Java学院整理
Jul 14 Javascript
jQuery阻止事件冒泡实例分析
Jul 03 jQuery
通过vue-cli3构建一个SSR应用程序的方法
Sep 13 Javascript
如何为vuex实现带参数的 getter和state.commit
Jan 04 Javascript
JavaScript设计模式之代理模式实例分析
Jan 16 Javascript
怎么理解wx.navigateTo的events参数使用详情
May 18 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的输入输出流
2007/02/14 PHP
PHP源码之explode使用说明
2011/08/05 PHP
apache php模块整合操作指南
2012/11/16 PHP
jQuery选择头像并实时显示的代码
2010/06/27 Javascript
使用jquery获取网页中图片高度的两种方法
2013/09/26 Javascript
javascript 通用loading动画效果实例代码
2014/01/14 Javascript
原生javascript实现无间缝滚动示例
2014/01/28 Javascript
Bootstrap免费字体和图标网站(值得收藏)
2017/03/16 Javascript
vue v-model表单控件绑定详解
2017/05/17 Javascript
Vue.js递归组件构建树形菜单
2017/12/24 Javascript
vue.js配合$.post从后台获取数据简单demo分享
2018/08/11 Javascript
解决vue路由后界面没有变化,但是链接有的问题
2018/09/01 Javascript
在小程序/mpvue中使用flyio发起网络请求的方法
2018/09/13 Javascript
jQuery实现数字自动增加或者减少的动画效果示例
2018/12/11 jQuery
vue 实现搜索的结果页面支持全选与取消全选功能
2019/05/10 Javascript
JS实现从对象获取对象中单个键值的方法示例
2019/06/05 Javascript
javascript网页随机点名实现过程解析
2019/10/15 Javascript
python 切片和range()用法说明
2013/03/24 Python
跟老齐学Python之变量和参数
2014/10/10 Python
Window10+Python3.5安装opencv的教程推荐
2018/04/02 Python
python3个性签名设计实现代码
2018/06/19 Python
python将list转为matrix的方法
2018/12/12 Python
python获取Pandas列名的几种方法
2019/08/07 Python
使用Matplotlib绘制不同颜色的带箭头的线实例
2020/04/17 Python
Django 允许局域网中的机器访问你的主机操作
2020/05/13 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
2020/12/03 Python
《一个中国孩子的呼声》教学反思
2014/02/12 职场文书
关于祖国的演讲稿
2014/05/04 职场文书
小班上学期幼儿评语
2014/12/30 职场文书
我们的节日元宵节活动总结
2015/02/06 职场文书
2016干部作风整顿心得体会
2016/01/22 职场文书
JavaScript实现酷炫的鼠标拖尾特效
2022/02/18 Javascript
星际争霸:毕姥爷vs解冻01
2022/04/01 星际争霸
【DOTA2】高能暴走TK秀!PSG LGD vs ASTER - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA
SQL SERVER中的流程控制语句
2022/05/25 SQL Server
Linux在两个服务器直接传文件的操作方法
2022/08/05 Servers