Javascript 奇数数组值问题
这太疯狂了,我不知道为什么 这是我的问题: 当我登录calEvent.start时,我得到了正确的日期和时间,但是!当我记录objJavascript 奇数数组值问题,javascript,jquery,jquery-week-calendar,Javascript,Jquery,Jquery Week Calendar,这太疯狂了,我不知道为什么 这是我的问题: 当我登录calEvent.start时,我得到了正确的日期和时间,但是!当我记录objcalEvent时,我的开始日期不显示时间:( 我有: console.log('=======addNewEvent========='); console.log('log of calEvent.start : ' + calEvent.start); console.log('log of calEvent obj : '); console.dir(calE
calEvent
时,我的开始日期不显示时间:(
我有:
console.log('=======addNewEvent=========');
console.log('log of calEvent.start : ' + calEvent.start);
console.log('log of calEvent obj : ');
console.dir(calEvent);
console.log('========================');
这就是我得到的:
console.log(calEvent.start)
控制台日志(calEvent)
如您所见,calEvent.start
显示正确的时间12:30:00,但calEvent
显示时间为00:00
知道为什么会这样吗(
注:我的英语很抱歉*
===============================[设置calEvent.start的代码]==========================
eventSetEvent : function(calEvent, $event, $titleName, $typeName, $typeL) {
resetForm($dialogContent);
$dialogContent.dialog({
modal: true,
title: $titleName,
open: function() {
$(".j-start-time").timepicker('setTime', MAIN.calendar.from24To12(MAIN.calendar.getInfoFromDate().hours(calEvent.start) + ':'+ MAIN.calendar.getInfoFromDate().minutes(calEvent.start)) );
$(".j-end-time").timepicker('setTime', MAIN.calendar.from24To12(MAIN.calendar.getInfoFromDate().hours(calEvent.end) + ':'+ MAIN.calendar.getInfoFromDate().minutes(calEvent.end)) );
},
close: function() {
$dialogContent.dialog("destroy");
$('#calendar').weekCalendar("removeUnsavedEvents");
},
buttons: {
save : function() {
var x = new Date();
time_zone = x.getTimezoneOffset() / 60;
calEvent.id = id;
id++;
MAIN.calendar.validation();
if( $typeL == 'C') {
calEvent.typeClass = 'class';
}
if( $typeL == 'P') {
calEvent.typeClass = 'private';
}
if( $typeL == 'O') {
calEvent.typeClass = 'available';
}
if( $('.error-field').doesExist() ) {
$('.j-err-msg').fadeIn();
} else {
$('.j-err-msg').fadeOut();
calEvent.date = MAIN.calendar.getInfoFromDate().year(calEvent.start) + '-' + MAIN.calendar.getInfoFromDate().month(calEvent.start) + '-' + MAIN.calendar.getInfoFromDate().day(calEvent.start);
calEvent.date_end = $('.j-date').val() != '' ? $('.j-date').val() : MAIN.calendar.getInfoFromDate().year(calEvent.start) + '-' + MAIN.calendar.getInfoFromDate().month(calEvent.start) + '-' + MAIN.calendar.getInfoFromDate().day(calEvent.start);
calEvent.date_end_hour = $('.j-end-time').val().toLowerCase();
calEvent.date_start_hour = $('.j-start-time').val().toLowerCase();
calEvent.end_date = $('.j-date').val() != '' ? $('.j-date').val() : MAIN.calendar.getInfoFromDate().year(calEvent.start) + '-' + MAIN.calendar.getInfoFromDate().month(calEvent.start) + '-' + MAIN.calendar.getInfoFromDate().day(calEvent.start);
calEvent.end_time = MAIN.calendar.getInfoFromDate().hours(calEvent.end) + ':' + MAIN.calendar.getInfoFromDate().minutes(calEvent.end);
calEvent.presettype = null;
calEvent.repeat_type = $('.j-radio-repeat:checked').val();
calEvent.start_date = MAIN.calendar.getInfoFromDate().year(calEvent.start) + '-' + MAIN.calendar.getInfoFromDate().month(calEvent.start) + '-' + MAIN.calendar.getInfoFromDate().day(calEvent.start);
calEvent.start_time = MAIN.calendar.getInfoFromDate().hours(calEvent.start) + ':' + MAIN.calendar.getInfoFromDate().minutes(calEvent.start);
calEvent.time_zone = time_zone;
calEvent.title = $('.j-title').val() ;
calEvent.type = $typeL;
calEvent.user_locations = null;
calEvent.zipcode = $('.j-zipcode').val();
MAIN.calendar.addNewEvent(calEvent);
$calendar.weekCalendar("removeUnsavedEvents");
$calendar.weekCalendar("updateEvent", calEvent);
$(".ui-dialog-content").dialog("close");
}
},
cancel : function() {
$(".ui-dialog-content").dialog("close");
}
}
}).show();
$dialogContent.find(".date_holder").text($calendar.weekCalendar("formatDate", calEvent.start));
},
我怀疑你被JavaScript控制台欺骗了 当您记录
calEvent.start
时,它会记录该属性当时的实际值
当您只记录calEvent时,它只显示一行,对吗?然后单击小箭头展开对象列表,对吗
然后,调试器会在您展开calEvent
对象时获取该对象的属性,而不是在您第一次调用console.log(calEvent)
时
现在,让我们讨论一下如何使代码更简单。我只举一个例子:冗长的函数调用MAIN.calendar.getInfoFromDate()
在这个函数中出现了20次
除非有特殊原因,否则应调用函数一次,将其返回值保存在变量中,然后在以下20个位置使用该变量:
eventSetEvent : function(calEvent, $event, $titleName, $typeName, $typeL) {
resetForm($dialogContent);
var info = MAIN.calendar.getInfoFromDate();
$dialogContent.dialog({
modal: true,
title: $titleName,
open: function() {
$(".j-start-time").timepicker('setTime', MAIN.calendar.from24To12(info.hours(calEvent.start) + ':'+ info.minutes(calEvent.start)) );
$(".j-end-time").timepicker('setTime', MAIN.calendar.from24To12(info.hours(calEvent.end) + ':'+ info.minutes(calEvent.end)) );
},
close: function() {
$dialogContent.dialog("destroy");
$('#calendar').weekCalendar("removeUnsavedEvents");
},
buttons: {
save : function() {
var x = new Date();
time_zone = x.getTimezoneOffset() / 60;
calEvent.id = id;
id++;
MAIN.calendar.validation();
if( $typeL == 'C') {
calEvent.typeClass = 'class';
}
if( $typeL == 'P') {
calEvent.typeClass = 'private';
}
if( $typeL == 'O') {
calEvent.typeClass = 'available';
}
if( $('.error-field').doesExist() ) {
$('.j-err-msg').fadeIn();
} else {
$('.j-err-msg').fadeOut();
calEvent.date = info.year(calEvent.start) + '-' + info.month(calEvent.start) + '-' + info.day(calEvent.start);
calEvent.date_end = $('.j-date').val() != '' ? $('.j-date').val() : info.year(calEvent.start) + '-' + info.month(calEvent.start) + '-' + info.day(calEvent.start);
calEvent.date_end_hour = $('.j-end-time').val().toLowerCase();
calEvent.date_start_hour = $('.j-start-time').val().toLowerCase();
calEvent.end_date = $('.j-date').val() != '' ? $('.j-date').val() : info.year(calEvent.start) + '-' + info.month(calEvent.start) + '-' + info.day(calEvent.start);
calEvent.end_time = info.hours(calEvent.end) + ':' + info.minutes(calEvent.end);
calEvent.presettype = null;
calEvent.repeat_type = $('.j-radio-repeat:checked').val();
calEvent.start_date = info.year(calEvent.start) + '-' + info.month(calEvent.start) + '-' + info.day(calEvent.start);
calEvent.start_time = info.hours(calEvent.start) + ':' + info.minutes(calEvent.start);
calEvent.time_zone = time_zone;
calEvent.title = $('.j-title').val() ;
calEvent.type = $typeL;
calEvent.user_locations = null;
calEvent.zipcode = $('.j-zipcode').val();
MAIN.calendar.addNewEvent(calEvent);
$calendar.weekCalendar("removeUnsavedEvents");
$calendar.weekCalendar("updateEvent", calEvent);
$(".ui-dialog-content").dialog("close");
}
},
cancel : function() {
$(".ui-dialog-content").dialog("close");
}
}
}).show();
$dialogContent.find(".date_holder").text($calendar.weekCalendar("formatDate", calEvent.start));
},
您可以进行其他简化,但这将为您提供一个开始的位置。您说:“正如您所看到的那样,calEvent.start显示正确的时间12:30:00,但是calEvent.start显示时间为00:00:00”它如何显示两个不同的时间?抱歉,输入错误:
calEvent.start
显示正确的时间12:30:00,但是calEvent
显示时间为00:00:00您是否使用了插件?如果是,请添加标签。我使用的是jquery周历。您能否向我们显示设置calEvent.start
的代码,以便我们可以准确地看到它是什么是吗?是的,但是calEvent.end
在没有问题的情况下工作。只是有问题的obj中的calEvent.start
。:(当然,这很有意义。在调用console.log(calEvent)之后的某个时候)
但在您单击调试器以展开对象之前,您的代码的某些部分修改了calEvent.start
,但没有修改calEvent.end
。我看到calEvent
正在作为参数传递到您的eventSetEvent
函数中。那么calEvent
是什么-一个全局变量呢e一定是您代码的其他部分在修改它。但是为什么calEvent.start
工作?我正在一个接一个地记录它们…事件是我记录calEvent.start
在登录calEvent
后,我仍然得到了正确的时间…但是在obj中,时间被设置为*00:00:00-根本没有意义(console.log(calEvent.start)
工作,因为它会立即记录当前值。请尝试以下操作:console.log(JSON.stringify(calEvent));
。这将记录当前值的JSON字符串,而不是我讨论的动态扩展。执行此操作时,start
会显示什么?
eventSetEvent : function(calEvent, $event, $titleName, $typeName, $typeL) {
resetForm($dialogContent);
$dialogContent.dialog({
modal: true,
title: $titleName,
open: function() {
$(".j-start-time").timepicker('setTime', MAIN.calendar.from24To12(MAIN.calendar.getInfoFromDate().hours(calEvent.start) + ':'+ MAIN.calendar.getInfoFromDate().minutes(calEvent.start)) );
$(".j-end-time").timepicker('setTime', MAIN.calendar.from24To12(MAIN.calendar.getInfoFromDate().hours(calEvent.end) + ':'+ MAIN.calendar.getInfoFromDate().minutes(calEvent.end)) );
},
close: function() {
$dialogContent.dialog("destroy");
$('#calendar').weekCalendar("removeUnsavedEvents");
},
buttons: {
save : function() {
var x = new Date();
time_zone = x.getTimezoneOffset() / 60;
calEvent.id = id;
id++;
MAIN.calendar.validation();
if( $typeL == 'C') {
calEvent.typeClass = 'class';
}
if( $typeL == 'P') {
calEvent.typeClass = 'private';
}
if( $typeL == 'O') {
calEvent.typeClass = 'available';
}
if( $('.error-field').doesExist() ) {
$('.j-err-msg').fadeIn();
} else {
$('.j-err-msg').fadeOut();
calEvent.date = MAIN.calendar.getInfoFromDate().year(calEvent.start) + '-' + MAIN.calendar.getInfoFromDate().month(calEvent.start) + '-' + MAIN.calendar.getInfoFromDate().day(calEvent.start);
calEvent.date_end = $('.j-date').val() != '' ? $('.j-date').val() : MAIN.calendar.getInfoFromDate().year(calEvent.start) + '-' + MAIN.calendar.getInfoFromDate().month(calEvent.start) + '-' + MAIN.calendar.getInfoFromDate().day(calEvent.start);
calEvent.date_end_hour = $('.j-end-time').val().toLowerCase();
calEvent.date_start_hour = $('.j-start-time').val().toLowerCase();
calEvent.end_date = $('.j-date').val() != '' ? $('.j-date').val() : MAIN.calendar.getInfoFromDate().year(calEvent.start) + '-' + MAIN.calendar.getInfoFromDate().month(calEvent.start) + '-' + MAIN.calendar.getInfoFromDate().day(calEvent.start);
calEvent.end_time = MAIN.calendar.getInfoFromDate().hours(calEvent.end) + ':' + MAIN.calendar.getInfoFromDate().minutes(calEvent.end);
calEvent.presettype = null;
calEvent.repeat_type = $('.j-radio-repeat:checked').val();
calEvent.start_date = MAIN.calendar.getInfoFromDate().year(calEvent.start) + '-' + MAIN.calendar.getInfoFromDate().month(calEvent.start) + '-' + MAIN.calendar.getInfoFromDate().day(calEvent.start);
calEvent.start_time = MAIN.calendar.getInfoFromDate().hours(calEvent.start) + ':' + MAIN.calendar.getInfoFromDate().minutes(calEvent.start);
calEvent.time_zone = time_zone;
calEvent.title = $('.j-title').val() ;
calEvent.type = $typeL;
calEvent.user_locations = null;
calEvent.zipcode = $('.j-zipcode').val();
MAIN.calendar.addNewEvent(calEvent);
$calendar.weekCalendar("removeUnsavedEvents");
$calendar.weekCalendar("updateEvent", calEvent);
$(".ui-dialog-content").dialog("close");
}
},
cancel : function() {
$(".ui-dialog-content").dialog("close");
}
}
}).show();
$dialogContent.find(".date_holder").text($calendar.weekCalendar("formatDate", calEvent.start));
},
eventSetEvent : function(calEvent, $event, $titleName, $typeName, $typeL) {
resetForm($dialogContent);
var info = MAIN.calendar.getInfoFromDate();
$dialogContent.dialog({
modal: true,
title: $titleName,
open: function() {
$(".j-start-time").timepicker('setTime', MAIN.calendar.from24To12(info.hours(calEvent.start) + ':'+ info.minutes(calEvent.start)) );
$(".j-end-time").timepicker('setTime', MAIN.calendar.from24To12(info.hours(calEvent.end) + ':'+ info.minutes(calEvent.end)) );
},
close: function() {
$dialogContent.dialog("destroy");
$('#calendar').weekCalendar("removeUnsavedEvents");
},
buttons: {
save : function() {
var x = new Date();
time_zone = x.getTimezoneOffset() / 60;
calEvent.id = id;
id++;
MAIN.calendar.validation();
if( $typeL == 'C') {
calEvent.typeClass = 'class';
}
if( $typeL == 'P') {
calEvent.typeClass = 'private';
}
if( $typeL == 'O') {
calEvent.typeClass = 'available';
}
if( $('.error-field').doesExist() ) {
$('.j-err-msg').fadeIn();
} else {
$('.j-err-msg').fadeOut();
calEvent.date = info.year(calEvent.start) + '-' + info.month(calEvent.start) + '-' + info.day(calEvent.start);
calEvent.date_end = $('.j-date').val() != '' ? $('.j-date').val() : info.year(calEvent.start) + '-' + info.month(calEvent.start) + '-' + info.day(calEvent.start);
calEvent.date_end_hour = $('.j-end-time').val().toLowerCase();
calEvent.date_start_hour = $('.j-start-time').val().toLowerCase();
calEvent.end_date = $('.j-date').val() != '' ? $('.j-date').val() : info.year(calEvent.start) + '-' + info.month(calEvent.start) + '-' + info.day(calEvent.start);
calEvent.end_time = info.hours(calEvent.end) + ':' + info.minutes(calEvent.end);
calEvent.presettype = null;
calEvent.repeat_type = $('.j-radio-repeat:checked').val();
calEvent.start_date = info.year(calEvent.start) + '-' + info.month(calEvent.start) + '-' + info.day(calEvent.start);
calEvent.start_time = info.hours(calEvent.start) + ':' + info.minutes(calEvent.start);
calEvent.time_zone = time_zone;
calEvent.title = $('.j-title').val() ;
calEvent.type = $typeL;
calEvent.user_locations = null;
calEvent.zipcode = $('.j-zipcode').val();
MAIN.calendar.addNewEvent(calEvent);
$calendar.weekCalendar("removeUnsavedEvents");
$calendar.weekCalendar("updateEvent", calEvent);
$(".ui-dialog-content").dialog("close");
}
},
cancel : function() {
$(".ui-dialog-content").dialog("close");
}
}
}).show();
$dialogContent.find(".date_holder").text($calendar.weekCalendar("formatDate", calEvent.start));
},