1

「JavaScript はアラートでのみ機能する」という質問を数多く見てきましたが、回答はそれらの質問のみに固有のものです。剣道カレンダーを使用しており、データベースの値から特定の日付を強調表示したいと考えています。以下のコードは、アラートが書き込まれた場合にのみ正常に動作します。親切に助けてください:

 var duedates = [];
     function GetDueDates() {
                     $.ajax({
                     type: "POST",
                     url: "ChartBinder.asmx/GetDueDates",
                     data: '{}',
                     contentType: "application/json; charset=utf-8",
                     dataType: "json",
                     success: function (msg) {
                         duedates = $.parseJSON(msg.d);      
                     },
                     error: function (msg) {    
                         alert("error");
                     }    
                 });
               }


  $(document).ready(function () {
               GetDueDates();   

//アラートがここに挿入されると機能が動作します..

               var today = new Date();
               $("#calendar").kendoCalendar({
                   change: onChange,
                   navigate: onNavigate,
                   value: today,
                   dates: duedates,
                   month: {
                       // template for dates in month view
                       content: '# if ($.inArray(+data.date, data.dates) != -1) { #' +
                                    '<div class="' +
                                           "dataexist" +
                                             '"></div>' +
                                 '# } #' +
                                 '#= data.value #'
                   },
                   footer: "Today - #=kendo.toString(data, 'd') #"

               });          

           $(document).find("#panelbar").kendoPanelBar({
               expandMode: "single"
           });
       });
4

1 に答える 1

0

解決策を得ました:コードを次のように変更しました:

var duedates = [];       
    function GetDueDates() {
             $.ajax({
             type: "POST",
             url: "ChartBinder.asmx/GetDueDates",
             data: '{}',
             contentType: "application/json; charset=utf-8",
             dataType: "json",
             success: function (msg) {
                 duedates = $.parseJSON(msg.d);                  
                  },
             error: function (msg) {    
                 alert("error");
             }    });
      }

     $(document).ready(function () {
         GetDueDates();
         setTimeout(function () { loadCalender(); }, 100);
         $(document).find("#panelbar").kendoPanelBar({
             expandMode: "single"
         });
         });


     function loadCalender() {
         var today = new Date();
         $("#calendar").kendoCalendar({
             change: onChange,
             navigate: onNavigate,    
             value: today,
             dates: duedates,
             month: {
                 // template for dates in month view
                 content: '# if ($.inArray(+data.date, data.dates) != -1) { #' +
                                                 '<div class="' +
                                                        "dataexist" +
                                                          '"></div>' +
                                              '# } #' +
                                              '#= data.value #'
             },
             footer: "Today - #=kendo.toString(data, 'd') #"
             });    
     }
于 2013-01-18T09:19:50.383 に答える