0

Date.jsを使用していくつかの日付を表示していますが、奇妙なことが起こります。eachステートメント内から形成された配列で使用する場合。

これが私が意味することです:

関数配列にを渡して使用すると、すべてが正常に機能しますevents_arrayが、関数配列を使用すると、同じように見えるはずです。次のようになります。testeventsArray

startDate is undefined
...new Date(startDate.getFullYear(), startDate.getMonth(), startDate.getDate()).getTime()...

function getTest() {
    $.ajax({
        type: "GET",
        url: "/index",
        dataType: "json",
        success: function (data) {

            var eventsArray = new Array();

            jQuery.each(data, function (i, val) {

                eventsArray.push(
                new Array({
                    startDate: new Date(2011, 07, 20, 15, 50),
                    endDate: new Date(2012, 00, 10),
                }));
            });

            var events_array = new Array({
                startDate: new Date(2011, 07, 20, 15, 50),
                endDate: new Date(2012, 00, 10),
            }, {
                startDate: new Date(2011, 07, 20, 15, 50),
                endDate: new Date(2012, 00, 10),
            });

          test(events_array);

        }
    });
}

何か案は?

ありがとう

4

3 に答える 3

2

テスト機能内で、次のことを試してください。

function test(eventsArray) {
  // try this

  eventsArray[0][0].startDate
}

eventsArray次のようになります:

eventsArray = [ 
                 [
                     {
                          startDate: ..
                          endDate: ..
                     }
                 ] 
              ];

しかし、あなたはそれをより簡単にするべきです:

var eventsArray = new Array();

    eventsArray.push({
     startDat: ..
     endDate: ..
    });

eventsArray不要な場合は、内部で追加のアレイを使用しないでください。

そして、その値にアクセスするには、以下を使用します。

eventsArray[0].startDate;

eventsArra[0].endDate;

を見るevents_arrayと、データをプッシュするときに追加の配列を使用していないことがわかります。

于 2012-06-07T20:10:06.220 に答える
1

おそらくeventArray、それぞれに単一のオブジェクトがある配列ではなく、オブジェクトで埋めることを意図していました。

eventsArray.push({ // NOT new Array...
    startDate: new Date(2011, 07, 20, 15, 50),
    endDate: new Date(2012, 00, 10)
}); });
于 2012-06-07T20:12:06.407 に答える
1

2つの配列は同一ではありません:var eventsArray = new Array();

        jQuery.each(data, function (i, val) {

            eventsArray.push(
            new Array({
                startDate: new Date(2011, 07, 20, 15, 50),
                endDate: new Date(2012, 00, 10),
            }));
        });
        /* here eventsArray is like that [[{
                startDate: new Date(2011, 07, 20, 15, 50),
                endDate: new Date(2012, 00, 10),
            }]] Look at the two [[ or ]] : array of object in an array
         */
        var events_array = new Array({
            startDate: new Date(2011, 07, 20, 15, 50),
            endDate: new Date(2012, 00, 10),
        }, {
            startDate: new Date(2011, 07, 20, 15, 50),
            endDate: new Date(2012, 00, 10),
        });
        /* here events_array is like that [{
                startDate: new Date(2011, 07, 20, 15, 50),
                endDate: new Date(2012, 00, 10),
            }, {}] only one [ ... array of objects ...
         */

私はあなたが使うべきだと思います:

eventsArray.push({
    startDate: new Date(2011, 07, 20, 15, 50),
    endDate: new Date(2012, 00, 10)
}); });

お役に立てれば

于 2012-06-07T20:13:01.833 に答える