[英]issue with undefined var in javascript, jquery. how to?
我正在使用Date.js来显示一些日期,并且发生了一件奇怪的事情。 如果我在each
语句中形成的数组中使用它。
这是我的意思:
如果我将events_array
传递并使用到test
函数数组,则一切正常,但是如果我使用eventsArray
,则外观应该相同,我得到:
startDate is undefined
...new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate()).getTime()...
function getTest() {
$.ajax({
type: "GET",
url: "/index",
dataType: "json",
success: function (data) {
var eventsArray = new Array();
jQuery.each(data, function (i, val) {
eventsArray.push(
new Array({
startDate: new Date(2011, 07, 20, 15, 50),
endDate: new Date(2012, 00, 10),
}));
});
var events_array = new Array({
startDate: new Date(2011, 07, 20, 15, 50),
endDate: new Date(2012, 00, 10),
}, {
startDate: new Date(2011, 07, 20, 15, 50),
endDate: new Date(2012, 00, 10),
});
test(events_array);
}
});
}
有任何想法吗?
谢谢
在测试功能中,请尝试以下操作:
function test(eventsArray) {
// try this
eventsArray[0][0].startDate
}
eventsArray
如下所示:
eventsArray = [
[
{
startDate: ..
endDate: ..
}
]
];
但是您应该使它更容易:
var eventsArray = new Array();
eventsArray.push({
startDat: ..
endDate: ..
});
如果不需要,请不要在eventsArray
使用其他数组。
要访问该值,请使用:
eventsArray[0].startDate;
eventsArra[0].endDate;
events_array
,您会看到,在其中推送数据时,您没有使用其他数组。 您可能打算用对象填充eventArray
,而不是用每个对象中的单个对象填充数组:
eventsArray.push({ // NOT new Array...
startDate: new Date(2011, 07, 20, 15, 50),
endDate: new Date(2012, 00, 10)
}); });
您的两个数组不相同:var eventsArray = new Array();
jQuery.each(data, function (i, val) {
eventsArray.push(
new Array({
startDate: new Date(2011, 07, 20, 15, 50),
endDate: new Date(2012, 00, 10),
}));
});
/* here eventsArray is like that [[{
startDate: new Date(2011, 07, 20, 15, 50),
endDate: new Date(2012, 00, 10),
}]] Look at the two [[ or ]] : array of object in an array
*/
var events_array = new Array({
startDate: new Date(2011, 07, 20, 15, 50),
endDate: new Date(2012, 00, 10),
}, {
startDate: new Date(2011, 07, 20, 15, 50),
endDate: new Date(2012, 00, 10),
});
/* here events_array is like that [{
startDate: new Date(2011, 07, 20, 15, 50),
endDate: new Date(2012, 00, 10),
}, {}] only one [ ... array of objects ...
*/
我认为你应该使用:
eventsArray.push({
startDate: new Date(2011, 07, 20, 15, 50),
endDate: new Date(2012, 00, 10)
}); });
希望这可以帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.