2013-03-19 24 views
0

我正在嘗試製作JSON,但出現類型錯誤。 錯誤提示,無法設置未定義的屬性「應用程序」。這發生在*.isFav = true 聲明。如果我刪除了它的if語句(isFavt(*)語句)。在JavaScript中製作JSON時出錯

任何幫助將不勝感激。謝謝!

 pref.userid = username; 
     //systems  
     systems = []; 
     for(i=0;i<system.length;i++) 
      { 
       systems[i] = new Object(); 
       systems[i].systemid = system[i]; 
       systems[i].apps = []; 
       j = 0; 
       $('.save label').each(function () 
        { 
         lst = $(this).text(); 
         console.log(systems[i]); 

         systems[i].apps[j] = new Object(); 
         systems[i].apps[j].name = lst; 
         systems[i].apps[j].href= findHref(lst.toLowerCase().replace(/ /g,'_')); 
         //seq 
         systems[i].apps[j].seq = j; 
         //check for favourites 
         if(isFavt(lst)) 
         systems[i].apps[j].isFav = 'true'; 
         else 
         systems[i].apps[j].isFav = 'false'; 

         //check for default 
         if(isDef(lst) == true) 
         systems[i].apps[j].isDef = 'true'; 
         else 
         systems[i].apps[j].isDef = 'false'; 
         //subapps 


         j = j + 1; 
        }); 
      } 
     pref.systems = systems; 
     return pref; 
} 
+0

你在哪做json對象? – 2013-03-19 06:14:08

回答

2

最有可能的,你isFavt()功能中有一個循環,即覆蓋i變量。 JavaScript有塊範圍和使用全局範圍如果您不聲明您的變量與var

更換

for(i=0;i<system.length;i++) 

for(var i=0;i<system.length;i++) 

做你isFavt功能一樣的,因爲這是錯誤的來源。其實,在的範圍內,每個變量都可以在你所有的代碼中使用。

此外,我強烈建議閱讀JavaScript中的範圍界定。

+0

這工作!你對isFavt函數是正確的。要宣佈他們正確的方式。謝謝。 – 2013-03-19 08:11:54