我使用document.cookie
创建了一个Cookie,当我发出提醒时,它会返回
nav=Panel; cookieValue=Panel; test=1; nav=Panel; cookieValue=buyer;
如何访问最后一个cookieValue
?
答案 0 :(得分:1)
假设您使用了创建了一个cookie, document.cookie =“我是一个cookie!”; 要读取cookie并将其存储在变量中,您可以使用, var x = document.cookie;
答案 1 :(得分:1)
我确信有一种更优雅的方式,但你可以转换为数组:
var cookie = "nav=Panel; cookieValue=Panel; test=1; nav=Panel; cookieValue=buyer; ";
var cookieArray = cookie.split('; ');
alert(cookieArray[cookieArray.length-2]);
答案 2 :(得分:0)
这个答案给出了三个解决方案。
将key=value
对拆分为数组,然后将该对拆分为=
以获取名称。该功能使用ECMA Script 5' reduce()
。如果结果对象memo
不再是null
,则会返回该对象。在这种情况下,reduce()
优雅地用作 find()
,返回更改后的值。
function getCookie(name) {
return document.cookie.split("; ").reduce(function(memo, token){
var pair;
if (memo) {
// we've already a value, don't bother parsing further values
return memo;
}
pair = token.split("=");
if (pair[0] === name) {
// return the decoded value as memoized value if the key matches
return decodeURIComponent(pair[1]);
}
}, null);
}
将key=value
对拆分为数组,然后将该对拆分为=
以获取名称。该函数利用ECMA Script 5的reduce()
将中间数组转换为key
将成为该对象属性的对象。
function getCookies() {
return document.cookie.split("; ").reduce(function(cookies, token){
// split key=value into array
var pair = token.split("=");
// assign value (1) as object's key with (0)
cookies[pair[0]] = decodeURIComponent(pair[1]);
// pass through the key-value store
return cookies;
}, { /* start with empty "cookies" object */ });
}
function getCookie(name) {
return getCookies()[name];
}
使用动态创建的正则表达式来提取key=value
对的值,最后解码该值。
function getCookie(name) {
return decodeURIComponent(
document.cookie.replace(
new RegExp("^.*" + name + "=([^\\s;]+).*$"), "$1"));
}