使用js来设置、读取、删除cookie的最佳代码(附换肤应用)

继上一篇文章中我们讲到cookie的概念,今天我们来写如何用js来设置cookie、读取cookie、删除cookie。本文代码来自网络,并附上网页常见的使用cookie换肤案例供学习。

设置cookie

function setCookie(name, value,days) {
//三个参数,一个是cookie的名子,一个是值,最后一个是天数
var exp = new Date();    //new Date("December 31, 9998");
exp.setTime(exp.getTime() + days * 24 * 60 * 60 * 1000);
document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString();
}

读取cookie

function getCookie(name) {
//取cookies函数
var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
if (arr != null)
return unescape(arr[2]);
return null;
}

删除cookie

function delCookie(name){
//删除cookie并重新演示
// 该函数检查下cookie是否设置,如果设置了则将过期时间调到过去的时间;
//剩下就交给操作系统适当时间清理cookie啦
if (getCookie(name))
{
document.cookie = name + "=" + "; expires=Thu, 01-Jan-70 00:00:01 GMT";
}
}

使用cookie换肤

除了添加上面的代码外,下面的这个是换肤系统的关键代码

var themes = {
		'gray' : 'tpl/gray.css',
		'black' : 'tpl/black.css',
		'bootstrap' : 'tpl/bootstrap.css',
		'default' : 'tpl/default.css',
		'metro' : 'tpl/metro.css'
	};

	var skins = $('.li-skinitem span').click(function() {
		var $this = $(this);
		if($this.hasClass('cs-skin-on')) return;
		skins.removeClass('cs-skin-on');
		$this.addClass('cs-skin-on');
		var skin = $this.attr('rel');
		$('#swicth-style').attr('href', themes[skin]);
		setCookie('cs-skin', skin);
		skin == 'dark-hive' ? $('.cs-north-logo').css('color', '#FFFFFF') : $('.cs-north-logo').css('color', '#000000');
	});

	if(getCookie('cs-skin')) {
		var skin = getCookie('cs-skin');
		$('#swicth-style').attr('href', themes[skin]);
		$this = $('.li-skinitem span[rel='+skin+']');
		$this.addClass('cs-skin-on');
		skin == 'dark-hive' ? $('.cs-north-logo').css('color', '#FFFFFF') : $('.cs-north-logo').css('color', '#000000');
	}

我把前端工具箱改了一下,支持换肤了。不过皮肤的细节css还需要完善。

前端开发工具

2013-8-21更新

在网上找到一段说是更简单的代码,先贴上来,有时间再研究

<script>
    Cookie =
{
 get: function (k) { return ((new RegExp(["(?:; )?", k, "=([^;]*);?"].join(""))).test(document.cookie) && RegExp["$1"]) || ""; },
 set: function (k, v, e, d) { document.cookie = [k, "=", v, e && e["toGMTString"] ? ';expires=' + e.toGMTString() : "", ";path=/;domain=", d || ""].join(""); },
 del: function (k) { document.cookie = k+'=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/'}
};
    //写入Cookie
    Cookie.set("UserID", "Hello qdkfweb.cn");
   //读取Cookie
    var value = Cookie.get("UserID");
    alert(value); // Hello qdkfweb.cn! 
</script>

注意:cookie在本地的静态页面上chrome和Internet explorer没有效果,可以在火狐上调试,然后再放到服务器上测试。


关注我

我的微信公众号:前端开发博客,在后台回复以下关键字可以获取资源。

  • 回复「小抄」,领取Vue、JavaScript 和 WebComponent 小抄 PDF
  • 回复「Vue脑图」获取 Vue 相关脑图
  • 回复「思维图」获取 JavaScript 相关思维图
  • 回复「简历」获取简历制作建议
  • 回复「简历模板」获取精选的简历模板
  • 回复「加群」进入500人前端精英群
  • 回复「电子书」下载我整理的大量前端资源,含面试、Vue实战项目、CSS和JavaScript电子书等。
  • 回复「知识点」下载高清JavaScript知识点图谱

每日分享有用的前端开发知识,加我微信:caibaojian89 交流