0

我正在尝试制作 JSON,但出现类型错误。错误说,无法设置未定义的属性“应用程序”。这发生在*.isFav = true 声明中。如果我删除 if 语句,它会起作用(isFavt(*)语句)。

任何帮助将不胜感激。谢谢!

        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;
}
4

1 回答 1

2

很可能,您的isFavt()函数中有一个循环,它会覆盖i变量。JavaScript没有块作用域,如果您不使用var.

代替

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

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

在你的isFavt函数中做同样的事情,因为那是错误的来源。实际上,对所有代码中您希望在函数本地的每个变量执行此操作。

另外,我强烈建议阅读 JavaScript 中的作用域。

于 2013-03-19T06:19:35.680 回答