以下Javascript函数返回一个JS对象:
function getCookies() {
var result = {};
var cookie = {};
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
cookie = cookies[i].split('=');
result[cookie[0]] = cookie[1];
}
return result;
}
当我尝试以“简单”的方式访问其字段时,我得到的只是“未定义”,例如:
var c = getCookies();
alert(c.a_cookie_name);
alert(c['a_cookie_name']);
我可以访问键和值的唯一方法是迭代字段,例如:
for(cookieName in c){
alert(c[cookieName]);
}
问题是如何在不迭代的情况下访问字段?
谢谢。
P.S。密钥和值确实存在,我可以在Chrome中看到console.log(getCookies())的对象字段。
答案 0 :(得分:3)
您正在正确访问字段,问题是您正在访问的字段不存在。它看起来好像名为a_cookie_name
的属性在对象上不存在。
修改强>
鉴于Chrome控制台将属性显示为现有属性,可以考虑的是属性名称中有空格。这可以解释差异,因为在控制台中很难看到空白区域。要测试它,请尝试以下方法。如果它们在那里,它将使空间更加可见
for (var cookieName in c) {
alert('"' + cookieName + '"="' + c[cookieName] + '"');
}