1

我有很多这样的月份:

var months = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"];

我想要做的是将月份的名称设为变量并为其设置一个对象,如下所示:

for(i=0;i<11;i++){
months[i] = $(".bitem:eq("+i+")");
}

但这只是替换months[i]if i=0例如,它将用对象替换“jan”)。我想要做的是使用months[i]等于变量名的字符串。我试过.toString()这样使用:

for(i=0;i<11;i++){
months[i].toString() = $(".bitem:eq("+i+")");
}

但我得到了错误:

Error: ReferenceError: invalid assignment left-hand side
4

2 回答 2

4

为什么你需要有变量名janfeb等等?据我所知,您可以通过使用具有属性的普通旧对象来做任何您想做的事情:

var monthNames = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"];

var months = {};
for(var i = 0; i < monthNames.length; i++) {
    months[monthNames[i]] = $(".bitem:eq("+i+")");
}

// Example usage
var januaryItem = months["jan"];
// or equivalent: months.jan;
于 2012-08-05T20:45:24.530 回答
1

不要创建变量,而是创建一个可以将字符串转换为数组索引的对象:

var monthIndex = {
  "jan": 0, "feb": 1, "mar": 2, "apr": 3, "may": 4, "jun": 5,
  "jul": 6, "aug": 7, "sep": 8, "oct": 9, "nov": 10, "dec": 11
};
var months = $(".bitem");

现在给定任何月份名称,您可以从数组中获取相应的元素:

var m = 'aug';
var element = months[monthIndex[m]];

您还可以使用特定的月份名称来获取索引:

var element = months[monthIndex.aug];
于 2012-08-05T20:51:26.043 回答