setCookie function: cookie
/** * 設置 cookie 值的函數 * @param {[type]} cname [key] * @param {[type]} cvalue [value] * @param {[type]} exdays [過時時間] */ function setCookie(cname, cvalue, exdays) { var d = new Date(); d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); var expires = "expires=" + d.toGMTString(); document.cookie = cname + "=" + cvalue + "; " + expires; }
正常的這樣設置是沒問題的,默認保存的path爲當前路徑dom
而後,我在首頁也就是‘/’路徑下設置了cookie,在子目錄下須要清除,因而百度各類deletecookie方法,各類大概意思就是設置當前cookie過時,but,毫無做用,而後,再次調用setCookie方法,發現居然又存進去一個。這個時候對比發現,他們的不一樣之處在於path。函數
因而,試試清除cookie時候加上根目錄path,這時候終於清除了,方法以下:code
/*清除cookie*/ function clearcookie(name) { var keys = document.cookie.match(/[^ =;]+(?=\=)/g); for (let i = 0; i < keys.length; i++) { if (keys[i] == name) { document.cookie = keys[i] + '=0;path=/;expires=' + new Date(0).toUTCString(); //清除當前域名下的,例如:www.zhaojiuling.com } } }
問題解決。get
備註:域名
清除cookie其餘使用方法:io
document.cookie = keys[i] + '=0;path=/;expires=' + new Date(0).toUTCString();//清除當前域名下的,例如:www.baidu.com document.cookie = keys[i] + '=0;path=/;domain=' + document.domain + ';expires=' + new Date(0).toUTCString();//清除當前域名下的,例如 www.baidu.com document.cookie = keys[i] + '=0;path=/;domain=kevis.com;expires=' + new Date(0).toUTCString();//清除一級域名下的或指定的,例如 baidu.com