document.cookie = "happy=random stuff";
function readCookie(name) {
var cookie,cname,i;
cookie = document.cookie.split(";");
cname = name;
for (i=0; i<=cookie.length; i++) {
var c = cookie[i];
if (c.indexOf(cname) == 0) {
alert(c.substring(cname.length,c.length));
return c.substring(cname.length,c.length);
}
}
return null;
}
readCookie("happy");
http://jsfiddle.net/a2R3j/ 这条线似乎错了:
if (c.indexOf(cname) == 0) {
它完美无缺。然而,jsfiddle说有一个错误。实际上有什么不对吗?
编辑CLARITY:我希望它通过调用函数getCookie(此处为name)来返回cookie的内容 另一个编辑为清晰起见 Yusaf代码:
带indexOf的代码:
答案 0 :(得分:0)
使用.split("=")[1]
而非您的子字符串方法
document.cookie = "joker=batman";
function readCookie(cname) {
var cookie_split = document.cookie.split(";");
for (i = 0; i < cookie_split.length; i++) {
var cookie_var = cookie_split[i].split("=")[0];
if (cookie_var == cname) {
return cookie_split[i].split("=")[1];
}
}
return null
}
alert(readCookie("joker"));
答案 1 :(得分:0)
你在document.cookie中有一个cookie - 所以长度为1,而cookie位于0(js从零开始)。
您的for
循环高达i <= cookie.length
,因此会迭代两次 - 首先是cookie[0]
,然后是cookie[1]
,因为cookie[1]
失败了不存在。
将for
循环更改为for (i = 0; i < cookie.length; i++) {