簡體   English   中英

javascript,jquery中未定義的var的問題。 如何?

[英]issue with undefined var in javascript, jquery. how to?

我正在使用Date.js來顯示一些日期,並且發生了一件奇怪的事情。 如果我在each語句中形成的數組中使用它。

這是我的意思:

如果我將events_array傳遞並使用到test函數數組,則一切正常,但是如果我使用eventsArray ,則外觀應該相同,我得到:

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);

        }
    });
}

有任何想法嗎?

謝謝

在測試功能中,請嘗試以下操作:

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 ,您會看到,在其中推送數據時,您沒有使用其他數組。

您可能打算用對象填充eventArray ,而不是用每個對象中的單個對象填充數組:

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

您的兩個數組不相同: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)
}); });

希望這可以幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM