0

"monthX" の形式で文字列の配列を作成しました。ここで、 は配列全体で増加する数値です。

配列の特定の項目を参照しようとしている関数がありますが、未定義のままになります。これが私のコードです:

function listCategories() {
    categoryList.innerHTML = ""

    for (var propertyName in categoryObject) {
        var rowHTML = "<div>"
        rowHTML += "<span class = 'category'>" + categoryObject[propertyName].name + "</span>"
        rowHTML += "<span class = '" + monthList[3] + "'><input/></span>"
        rowHTML += "</div>"
        categoryList.innerHTML += rowHTML
    }
}

//Months to load in
for (var i=0; i<24; i++) {
    monthList[i] = "month" + (i + startingMonth)
}

私が興味を持っているのは、その「monthList[3]」行です。console.log(monthList[3]) が正しく「month6」と表示されていても、それは未定義として入り続けます。何か案は?コードにバグがありますか?

4

2 に答える 2

0

さて、2つの質問:いつ「listCategories()」を呼び出すのですか?monthListを設定する前または後?

そして、最初にmonthListのグローバルを設定しましたか?

    //globalize monthList array to be usable in functions
var monthList;

function listCategories() {
    categoryList.innerHTML = ""

    for (var propertyName in categoryObject) {
        var rowHTML = "<div>"
        rowHTML += "<span class = 'category'>" + categoryObject[propertyName].name + "</span>"
        rowHTML += "<span class = '" + monthList[3] + "'><input/></span>"
        rowHTML += "</div>"
        categoryList.innerHTML += rowHTML
    }
}

//Months to load in
for (var i=0; i<24; i++) {
    monthList[i] = "month" + (i + startingMonth)
}

//do NOT CALL listCategories prior this line!!

それはする必要があります

于 2013-02-05T00:35:19.277 に答える
0

In the code you show us, you never declare monthList or define it as an array.

function listCategories() {
    categoryList.innerHTML = ""

    for (var propertyName in categoryObject) {
        var rowHTML = "<div>"
        rowHTML += "<span class = 'category'>" + categoryObject[propertyName].name + "</span>"
        rowHTML += "<span class = '" + monthList[3] + "'><input/></span>"
        rowHTML += "</div>"
        categoryList.innerHTML += rowHTML
    }
}

var monthList = [],
    startingMonth = 1;

//Months to load in
for (var i=0; i<24; i++) {
    monthList[i] = "month" + (i + startingMonth)
}

Notice the additional lines I added after the function definition, but before the loop.

于 2013-02-05T00:35:53.167 に答える