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