Доступ к атрибутам объекта, хранящегося в массиве - PullRequest
1 голос
/ 28 мая 2019

Вот мое условие: я уже знал, что мне нужно пятнадцать объектов для хранения данных о событиях, поэтому я просто объявил пятнадцать переменных:

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 Может кто-нибудь сказать мне, почему это не может работать? Большое спасибо!

1 Ответ

3 голосов
/ 28 мая 2019

Вам нужно присвоить переменные до того, как вы поместите их в массив.При присвоении массива используются текущие значения переменных, он не заставляет массив неявно ссылаться на переменные.

Но в первую очередь переменные не нужны, просто присваивают их непосредственно массиву:

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

Каждый раз, когда вы называете переменные с числовыми суффиксами, вы почти всегда должны использовать массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...