将变量推送到数组会返回未定义的结果
2018-05-02
1045
解决了,谢谢!我需要指定索引。
我正尝试将一组变量从用户输入推送到数组中。 不使用推送,它工作正常;
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);
有人能解释为什么会发生这种情况吗? 据我所知,我需要使用推送,因为我最终希望每次用户输入数据时都创建一个新的、填充的索引号,因此非常感谢任何帮助。 提前致谢
3个回答
您正在访问数组。 因此,document.write 部分应如下所示
document.write(appointmentArr[0].start);
document.write(appointmentArr[0].end);
Pajri Aprilio
2018-05-02
由于
appointmentArr
是一个数组,因此您应首先使用
appointmentArr[0]
来访问
数组
的第一个
元素
。
推送值后,
appointmentArr
变为
[{start:inputStart, end:inputEnd}]
由于它是一个
数组
,因此您
无法直接访问对象键
,您必须使用
特定索引元素
,然后使用
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);
请运行上述代码片段
Sravan
2018-05-02
您将变量重新分配为 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);
Isitea
2018-05-02