выдвижение переменных в массив возвращает неопределенное - PullRequest
0 голосов
/ 02 мая 2018

решено, спасибо! Мне нужно было указать индекс.

Я пытаюсь вставить набор переменных в массив из пользовательского ввода. Без использования push он работает нормально;

var inputStart = addAppointment.inputStart.value;
var inputEnd = addAppointment.inputEnd.value;
var appointmentArr = [];
appointmentArr = {start:inputStart, end:inputEnd};
document.write(appointmentArr.start);
document.write(appointmentArr.end);

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

var inputStart = addAppointment.inputStart.value;
var inputEnd = addAppointment.inputEnd.value;
var appointmentArr = [];
appointmentArr.push({start:inputStart, end:inputEnd});
document.write(appointmentArr.start);
document.write(appointmentArr.end);

Кто-нибудь может объяснить, почему это происходит? Насколько мне известно, мне нужно использовать push, потому что я в конечном итоге хочу создавать новый заполненный индексный номер каждый раз, когда пользователь вводит данные, поэтому любая помощь очень ценится. Заранее спасибо

Ответы [ 3 ]

0 голосов
/ 02 мая 2018

Вы переназначили свою переменную как Object.

var appointmentArr = [];
appointmentArr = {start:inputStart, end:inputEnd};

Этот код перезаписывает appointmentArr с Array [] до Object { start:inputStart, end:inputEnd }

А во втором коде:

var appointmentArr = [];
appointmentArr.push({start:inputStart, end:inputEnd});

Вы изменяете appointmentArr с Array [] на Array [ {start:inputStart, end:inputEnd} ].

Итак, следующий код будет работать так, как вы хотите.

document.write(appointmentArr[0].start);
document.write(appointmentArr[0].end);
0 голосов
/ 02 мая 2018

Вы получаете доступ к массиву. Итак, часть document.write должна быть такой

document.write(appointmentArr[0].start);
document.write(appointmentArr[0].end);
0 голосов
/ 02 мая 2018

Поскольку appointmentArr является массивом, вам нужно сначала взять appointmentArr[0], чтобы получить доступ к первым element из array.

После того, как вы нажмете значение, appointmentArr станет [{start:inputStart, end:inputEnd}]

Так как это array, вы не можете получить прямой доступ к ключам объекта , вам нужно взять specific index element, а затем получить к ним доступ, используя appointmentArr[index]

    var inputStart = 'inputStart';
    var inputEnd = 'inputEnd';
    var appointmentArr = [];
    appointmentArr.push({start:inputStart, end:inputEnd});
    document.write(appointmentArr[0].start + ' ');
    document.write(appointmentArr[0].end);

Пожалуйста, запустите приведенный выше фрагмент

...