2013-03-19 76 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