我有一个for循环,它在响应中迭代通过currentObject。
此代码:
console.log(response[currentObject]);
清楚地显示响应[currentObject]在其他属性中有“start”。
但是,这段代码告诉我变量是未定义的:
console.log(response[currentObject].start);
这是为什么?请注意,“start”是日期变量。
这是整个功能:
function(response) {
for (var currentObject in response) {
//Parsing the data before its used
//"17\/10\/2012 20:55:00"
var phpStartDate = response[currentObject].start;
console.log(response[currentObject]);
var phpStopDate = response[currentObject].stop;
var datePartsStart = phpStartDate.match(/(\d+)/g);
var datePartsStop = phpStopDate.match(/(\d+)/g);
var parsedDateStart = new Date(datePartsStart[2], datePartsStart[1], datePartsStart[0], datePartsStart[3], datePartsStart[4], datePartsStart[5]);
var parsedDateStop = new Date(datePartsStop[2], datePartsStop[1], datePartsStop[0], datePartsStop[3], datePartsStop[4], datePartsStop[5]);
response[currentObject].start = parsedDateStart;
response[currentObject].stop = parsedDateStop;
//debugger;
};
return response;
}
忘记添加,我正在使用jQuery 1.8.2,我认为处理日期的方式与1.7不同(但我不能使用1.7,因为我有很多其他问题!)
这是console.log(响应)的输出:Object
data: Array[3]
0: Object
hourly: "4.00"
id: "40"
staff: "James Hadley"
start: "2012-09-25 00:00:00"
stop: "2012-09-27 00:00:00"
__proto__: Object
1: Object
hourly: "25.00"
id: "39"
staff: "James Hadley"
start: "2012-10-17 21:12:00"
stop: "2012-10-26 02:30:00"
__proto__: Object
2: Object
length: 3
__proto__: Array[0]
total: 3
__proto__: Object
答案 0 :(得分:0)
我想这是一个计时问题,因为console.log对象是 live 。尝试
console.log(JSON.stringify(response[currentObject]));
我打赌它不包括start
,即使没有stringify
它也可以。您的回复是异步的,您过早访问start
(您的代码未显示该部分)。
现在你的评论很明显。它是一个数组,你缺少索引,例如0
console.log(response[currentObject][0].start);
答案 1 :(得分:-1)
使用
currentObject.start = parsedDateStart
而不是
response [currentObject] .start = parsedDateStart