實際開發中有要求用戶一些行為每天一次,次日開始重新回復功能,一般前端都是通過cookie來記住用戶的操作,然后進行判斷當日是否還有機會,這時候需要給存儲的cookie值一個有效期,讓次日自動失效,重新計數,代碼如下:
cookie = { /** * 獲取cookie */ get: function (name) { var cookieName = encodeURIComponent(name) + '=', cookieStart = document.cookie.indexOf(cookieName), cookieValue = null; if (~cookieStart) { var cookieEnd = document.cookie.indexOf(';', cookieStart); if (!~cookieEnd) { cookieEnd = document.cookie.length; } cookieValue = decodeURIComponent(document.cookie.substring(cookieStart + cookieName.length, cookieEnd)); } return cookieValue; }, /** * 設置cookie */ set: function (name, value, expires, path, domain, secure) { var cookie = encodeURIComponent(name) + '=' + encodeURIComponent(value); expires instanceof Date && (cookie += '; expires=' + expires.toGMTString()); path && (cookie += '; path=' + path); domain && (cookie += '; domain=' + domain); secure && (cookie += '; secure'); document.cookie = cookie; }, /** * 刪除cookie * javascript里,沒有提供直接刪除cookie的api,只有通過將過期時間, * 設置成過去的某個時間,讓cookie過期,來刪除。 */ del: function (name, path, domain, secure) { this.set(name, '', new Date(0), path, domain, secure); } }
下面是存儲cookie並設置有效期:
//cookie過期時間,次日凌晨 var expires = new Date(new Date(new Date().getTime() + 30*24 * 60 * 60 * 1000).setHours(0, 0, 0, 0)); //需要存儲的cookie值 var value='100' cookie.set("key", value, expires);