2013-10-24 16 views
1

Это безумие, и я понятия не имею, почему !?Проблема с нечетным значением массива

Вот мой вопрос:

Когда я войти calEvent.start я получить правильную дату с нужное время, но! когда я войти в OBJ 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)

Fri Oct 25 2013 12:30:00 GMT-0400 (EDT) 

console.log (calEvent)

Object 
    date: "2013-10-25" 
    date_end: "2013-10-25" 
    date_end_hour: "6:30 pm" 
    date_start_hour: "5:30 pm" 
    end: Fri Oct 25 2013 18:30:00 GMT-0400 (EDT) 
    end_date: "2013-10-25" 
    end_time: "18:30" 
    id: 109 
    location: "63" 
    presettype: null 
    repeat_type: "N" 
    start: Fri Oct 25 2013 00:00:00 GMT-0400 (EDT) 
    start_date: "2013-10-25" 
    start_time: "17:30" 
    time_zone: 4 
    title: "s" 
    type: "C" 
    typeClass: "class" 
    user_locations: null 
    zipcode: "10023" 

Как вы можете увидеть calEvent.start дисплей в нужное время 12:30:00 но calEvent дисплей время, как 00: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)); 
}, 
+1

Вы сказали: «Как вы можете видеть отображение calEvent.start в нужное время 12:30:00, но calEvent.start отображает время как 00:00:00« как он может отображаться два разных раза? –

+0

извините, опечатка: 'calEvent.start' отображает правильное время ** 12: 30: 00 **, но' calEvent' отображает время как ** 00: 00: 00 ** –

+1

Вы используете какой-либо плагин? Если да, добавьте тег. –

ответ

2

Я подозреваю, что вы обмануты консоли 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)); 
}, 

Есть дополнительные упрощений вы может сделать, но это даст вам место для начала.

+0

Да, но 'calEvent.end' работает без проблем. Это просто «calEvent.start» с объектом, который имеет проблему ... :( –

+0

Конечно, это имеет смысл. Иногда после того, как вы вызвали 'console.log (calEvent)', но прежде, чем вы нажали в отладчике, разверните объект, некоторая часть вашего кода изменила 'calEvent.start', но не изменила' calEvent.end'. Я вижу, что 'calEvent' передается в вашу функцию' eventSetEvent' в качестве аргумента. Итак, что такое 'calEvent' затем - глобальная переменная? Должна быть какая-то другая часть вашего кода, которая ее модифицирует. –

+0

, но почему будет работать 'calEvent.start'? Я регистрирую их один за другим ... event is i log' calEvent.start 'после регистрации' calEvent' я все еще получаю нужное время ... но с в obj время устанавливается на *** 00: 00: 00 ** - совсем не имеет смысла! :( –

Смежные вопросы