1

様式化された形式で、次のような設定があります。

(function () {
    var db = {
        com: {                    EDIT: Changed this from [...] to {...}
            324: {
                unmod: "xyz"
            }
        }
    };

    var report = {
        mymethod: function () {
            var x = db.com[324].unmod;
        }
    };
})();

私が受け取っているエラーメッセージはですdb.com is undefinedreport.mymethod「見る」ことができないように私には思えdb.comます。それは正しいでしょうか?

1つの要因は、db.com次のようにAJAXデータをループすることによって作成されることである可能性があります。

    for (i = 0; i < length1; i++) {
            cat = o.cat[i];
            length2 = cat.com.length;

            // Loop through comments
            for (j = 0; j < length2; j++) {
                com = cat.com[j];

                // Create db object
                this[com.cnum] = {
                    unmod: com.unmod
                };
            }               
    }

問題は閉鎖の問題ですか?

AJAXデータの関連部分は次のようになります

       "cat":[  
        { ...
          "com": [ {"cnum":"324", "unmod":"xyz"},...]  
        }, ...],

AJAX名とプロパティ名が同じであるとお詫びします。それは私にとっては簡単になりますが、おそらくあなたにとってはそうではありません:)

4

2 に答える 2

2

ポピュレーション部分を修正した後、サンプルコードは期待どおりに機能します:http://jsfiddle.net/4bL8T/

于 2012-06-07T08:14:41.857 に答える
-1

このコードを実行する前に:

(function () {
var db = {
    com: [
        324: {
            unmod: "xyz"
        }
    ]
};

var report = {
    method: function () {
        var x = db.com[324].unmod;
    }
};})();

console.logでdb.comオブジェクトのスコープを確認します。オブジェクトが未定義の場合は、使用する前に定義する必要があります。

于 2012-06-07T07:43:58.710 に答える