【问题标题】:Accessing attributes of an object stored in an array访问存储在数组中的对象的属性
【发布时间】:2019-05-28 15:38:39
【问题描述】:

这是我的条件:我已经知道我需要十五个对象来存储事件数据,所以我只声明了十五个变量:

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 + "')");

我需要做同样的事情十五次才能将每个事件信息放到单独的块中,如下所示:<div id="e-1">!所以我只是尝试了以下方法,我认为它一定是解决方案:我将十五个对象放在一个数组中。

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 谁能告诉我为什么这行不通? 非常感谢!

【问题讨论】:

    标签: javascript html arrays object


    【解决方案1】:

    您必须在将变量放入数组之前分配变量。数组赋值使用变量的当前值,它不会使数组隐式引用变量。

    但是一开始就不需要变量,直接赋值给数组即可:

    var events = [
        new Event('Nike', 'BUY ONE GET ONE FOR FREE', logo_url, logo_url2),
        ...
    ];
    

    每当您发现自己使用数字后缀命名变量时,您几乎总是应该使用数组来代替。

    【讨论】:

      猜你喜欢
      • 2019-03-20
      • 2020-11-10
      • 1970-01-01
      • 1970-01-01
      • 2015-08-03
      • 1970-01-01
      • 2014-03-04
      • 1970-01-01
      相关资源
      最近更新 更多