2011-09-27 220 views
3

下面的JavaScript函數返回一個JS對象的字段:無法訪問Javascript對象

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())查看對象字段。

回答

3

您正在訪問字段問題是您正在訪問的字段不存在。它看起來像名爲a_cookie_name的屬性根本不存在於對象上。

編輯

鑑於Chrome瀏覽器控制檯顯示的屬性爲現有的,一種可能性要考慮的就是沒有在屬性的名稱空白。這可以解釋不同之處,因爲在控制檯中很難看到空白區域。要測試這一點,請嘗試以下操作。它將使空間多一點可見,如果他們有

for (var cookieName in c) { 
    alert('"' + cookieName + '"="' + c[cookieName] + '"'); 
} 
+0

在谷歌克羅默的控制檯,我看到的是,函數返回正確的字段名稱和值的對象。 – vicuv

+0

@vicuv你認爲輸出中有空白嗎?這會使它在Chrome控制檯顯示中不可見,但會阻止您通過名稱訪問該屬性 – JaredPar

+0

@vicuv我已更新我的警報示例以幫助檢測屬性名稱中的空白區域的可能性 – JaredPar