0

私はJavaScriptが初めてで、日付のリストを含むjson応答を使用して特定の日付を強調表示する日付ピッカーを作成したいと考えています。

これは私がしようとしているものです:

var dates = [];
dates = getDays();
$(function () {
    $("#datepicker").datepicker({
        beforeShowDay: setHoliDays
    });
    function setHoliDays(date) {
        for (var i = 0; i < dates.lenght; i++) {
            if (dates[i] == date) {
                return [true, "green"];
            }
        }
        return [true, ""];
    }
});
function getDays() {
    var arr = [];
    $.getJSON("/getDates", function (data) {
        $.each(data, function (id, val) {
            arr.push(val);
        });
        return arr;
    });
} 

JSON 応答は次のとおりです。

["2013-03-18T12:00:00","2013-03-19T12:00:00","2013-03-20T12:00:00",
"2013-03-21T11:00:00","2013-03-21T10:00:00","2013-03-21T08:00:00",
"2013-03-25T10:00:00","2013-03-26T08:00:00","2013-03-27T09:00:00",
"2013-03-28T08:00:00","2013-03-28T09:00:00","2013-03-28T10:00:00",
"2013-03-28T11:00:00","2013-03-28T12:00:00"]

私は何を間違っていますか?

4

1 に答える 1

0

getDays 関数が非同期呼び出しを行っています。これは、リモート リソースから実際に応答を受信する前に、メソッドが返されることを意味します (この場合は何も返されません)。この応答を利用するには、コールバック関数で配列を作成し、それをどこかに保存する必要があります (グローバル変数が最も簡単ですが、ここでは説明しない理由からお勧めできません)。次に、 setHoliDays 関数でこれを利用できます。

すでにグローバルを使用していることを考えると、コールバックは次のように終了する可能性があります。

$.each(data,function(id,val){
  arr.push(val);
});
dates = arr;
于 2013-03-25T19:09:17.317 に答える