JavaScript,jquery中未定义的VAR的问题.如何

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

本文关键字:VAR 如何 问题 未定义 jquery JavaScript      更新时间:2023-09-26

我正在使用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)
}); });

希望这有帮助