将变量推送到数组 returns undefined

pushing variables to array returns undefined

已解决,谢谢!我需要指定索引。

我正在尝试将一组变量从用户输入推入数组。 不使用推送它工作正常;

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);

但是,当我尝试推送变量时 returns 未定义;

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);

谁能解释为什么会这样? 据我所知,我需要使用推送,因为我最终想在每次用户输入数据时创建一个新的、填充的索引号,所以非常感谢任何帮助。 提前致谢

因为appointmentArr是一个数组,你应该先用appointmentArr[0]访问array的第一个element

推送值后,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);

请运行以上片段

您将变量重新分配为对象。

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

此代码将 appointmentArrArray [] 覆盖为 Object { start:inputStart, end:inputEnd }

在第二个代码中:

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

您将 appointmentArrArray [] 修改为 Array [ {start:inputStart, end:inputEnd} ]

所以,下面的代码将如您所愿。

document.write(appointmentArr[0].start);
document.write(appointmentArr[0].end);

您正在访问数组。 所以,document.write 部分应该是这样的

document.write(appointmentArr[0].start);
document.write(appointmentArr[0].end);