0

JSONを作成しようとしていますが、型エラーが発生します。エラーは、未定義のプロパティ'apps'を設定できないことを示しています。これは*.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()を上書きするループがあります。iJavaScriptにはブロックスコープがなく、変数をで宣言しない場合はグローバルvarスコープを使用します。

交換

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

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

エラーの原因は関数であるため、関数でも同じことを行いisFavtます。実際には、すべてのコード内で関数に対してローカルであると予想されるすべての変数でそれを実行します。

また、JavaScriptでのスコープについて読むことを強くお勧めします。

于 2013-03-19T06:19:35.680 に答える