在localStorage中创建一个对象数组

时间:2015-05-03 19:35:08

标签: javascript json local-storage

此代码用于在localStorage中存储数据。如果localStorage还是空的,我想创建一个这样类型的数组:

(Key:)Events (Value:)[{Date: "", Event: "", Participants: "", Description: ""}]

如果还有localStorage中的某些数据,则运行代码 else if else

if (tdAttr) {


    var fastDate = tdAttr.getAttribute('data-cell');
    var fastEvent = fastAddEvent.value;

    var events = JSON.parse(localStorage.getItem('events')) || [];
    localStorage.setItem('events', JSON.stringify(events));



    var addFastEvent = function () {

        if (events.length == 0) {
            //JS doesn't see the "events" variable inside this scope
        } else if (events.length > 0) {

            for (var i = 0; i < events.length; i++) {

                if (events[i].Date == fastDate) {

                    events[i].Event = fastEvent;
                    events[i].Participants = "";
                    events[i].Description = "";


                };


                break;

            };



        };


        localStorage.setItem('events', JSON.stringify(events));


    };


    addFastEvent();

};

所以,问题#1 :为什么JS没有定义中的 事件 变量 if condition(console.log: Uncaught TypeError: Cannot read property 'length' of undefined)?

虽然在之后,如果...... 确实如此。

问题#2: 如何创建数组

(Key:)Events (Value:)[{Date: "", Event: "", Participants: "", Description: ""}]

在第一个 if 条件中? 我试过了

if (events.length == 0) {
    var events = [];
    arr.push({
        Date: fastDate,
        Event: fastEvent,
        Participants: "",
        Description: ""
    });

}

但它仍然没有看到变量事件(甚至在 if 条件内),并向我显示错误。

UPD 我成功解决了问题#2

       if (events.length == 0) {

                            localStorage['events'] = events.push({

                              Date: fastDate, 
                              Event: fastEvent, 
                              Participants: "", 
                              Description: ""

                            });
                        }

尽管如此,仍然无法理解为什么变量是&#34;隐形&#34;在第一个 if 条件中。让我们说,当条件开始检查时,没有存储的项目,但我理解我的变量

     var events = JSON.parse(localStorage.getItem('events')) || [];

像这样 - 我们得到存储的项目,如果没有存储的项目,我们创建一个数组。 似乎JS理解它就像 - 我们得到存储的项目或现有的数组

0 个答案:

没有答案