/*
* 功能:設置cookie
* 參數:
* _name cookie名稱
* _value 該cookie名稱所對應的數據
* _date 該cookie的過期時間,單位天
* 返回值:無
* 示例:
* setCookie("a", "10", 1); 創建或修改一個cookie,名稱叫做a,值為"10",過期時間為1天后
* setCookie("a", "10"); 創建或修改一個cookie,過期時間為會話(會話指頁面打開到關閉的時間有效)
* setCookie("a", "10", -1); 刪除名稱叫做a的這個cookie
*/
//開始封裝存儲cookie的函數setCookie
/*
* _name ? ? cookie的名字
* _value??? 要存儲的cookie值
* _date???? cookie的存儲時間,即有效時間
*/
function setCookie(_name, _value, _date){
????????? // 創建一個對象,這里以對象的形式存儲數據
????????? var obj = {
??????????????????? "tmp" : _value
?????????? }
????????? // 將對象轉為字符串
???????? var str = JSON.stringify(obj); // str='{"tmp":_value}'
???????? // 中文編碼
??????? str = encodeURIComponent(str);
??????? // 存儲cookie
??????? // 如果有輸入這個參數,則表示設置一個具體的時間
?????? if( _date ){
??????????? var d = new Date();
??????????? d.setDate( d.getDate()+_date );
?????????? //注意:分號后邊添加空格
?????????? document.cookie = _name+"="+str+"; path=/; expires="+d.toGMTString();
????? }else{
??????????? // 沒有設置_date這個參數時,創建和修改的cookie的過期時間為會話
??????????? document.cookie = _name+"="+str+"; path=/; ";
????? }
}
//封裝獲取某個cookie
/*
* 功能:獲取cookie
* 參數:
* _name 指cookie名稱
* 返回值:存儲的內容
* 示例:
* getCookie("a")
*/
function getCookie(_name){
????????? // 找到所有的cookie,這里的cookie值是以字符串的形式存儲的
???????? var str = document.cookie; // str="a=1; b=2; c=3"
???????? // 字符串轉數組
???????? var arr = str.split("; ");// 注意分號后面有一個空格 ,arr = ["a=1", "b=2", "c=3"]
???????? for(var i = 0,l=arr.length;i<l;i++){
??????????????? var col = arr[i].split("="); // arr[i]="a=1" col = ["a", "1"]
??????????????? if( col[0] == _name ){
?????????????? ? ? ? ?? //return decodeURIComponent(col[1]); // 下標0指cookie名稱,下標1指cookie值
????????????? ? ? ? ? ? ? ? // _name所對應的cookie
???????????? ? ? ? ? ? ? ?? //console.log("col[1] : ", col[1]);
???????????? ? ? ? ? ? ? ?? var str = decodeURIComponent(col[1]);
???????????? ? ? ? ? ? ? ? // 字符串轉為json對象
??????????? ? ? ? ? ? ? ?? var obj = JSON.parse(str);
?????????? ? ? ? ? ? ? ?? // 在json對象中,獲取tmp屬性
????????? ? ? ? ? ? ? ? ? return obj.tmp;
??????? ? ? ? ?? }
? ? ? ? }
???????? // 如果循環結束后,也沒有找到_name,直接返回空
???????? // 如果此處不寫,則返回undefined
??????? return "";
}