这是我的情况:我已经知道我需要十五个对象来存储事件数据,所以我只声明了十五个变量:
var e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, 15;
function Event(title, content, logo, logo_in_black) {
this.title = title;
this.content = content;
this.logo = logo;
this.logo_in_black = logo_in_black;
}
根据用户的点击,我根据用户的点击将数据动态分配给对象:
e1 = new Event('Nike', 'BUY ONE GET ONE FOR FREE', logo_url, logo_url2);
然后在视图上显示结果:
$('#e-1').css('background-image', "url('" + e1.logo + "')");
我需要做15次相同的操作才能将每个事件信息放入单个块中,例如:<div id="e-1">
!因此,我只是尝试了以下方法,但我认为这一定是解决方案:我在数组中放置了15个对象。
var e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15;
var events = [e1, e2, e3, e4, e5, e6, e7, e8, e9, e10, e11, e12, e13, e14, e15];
分配数据并在视图上显示:
e1 = new Event('Nike', 'BUY ONE GET ONE FOR FREE', logo_url, logo_url2);
e2 = ...
e3 = ...
for (var i = 0; i < 15; i ++) {
$('#e-' + (i + 1)).css('background-image', "url('" + events[i].logo + "')");
}
但是我尝试访问属性的方式是错误的:events[i].logo
谁能告诉我为什么这行不通?
非常感谢!
答案 0 :(得分:3)
在将变量放入数组之前,必须先分配变量 。数组分配使用变量的当前值,不会使数组隐式引用变量。
但是首先不需要这些变量,只需将其直接分配给数组即可:
var events = [
new Event('Nike', 'BUY ONE GET ONE FOR FREE', logo_url, logo_url2),
...
];
每当您发现自己使用数字后缀命名变量时,几乎应该总是使用数组代替。