如何在localstorage中存储多个数据

时间:2015-03-23 07:14:25

标签: javascript jquery

我需要什么

  • 我需要在数组中存储更多数据,这样用户点击div各个数据必须存储在数组中。

喜欢

id:1223,city:' chicago',

ID:12333,城市:'纽约&#39 ;;

代码

      function favaorite(sess_id,name,city,country,event_url,pointer)
        {



        /* store imageurl in localstorage */
        var  imageUrl='/images/star1_phonehover.png';


        // Save data to the current local store//

        // Put the object into storage
        localStorage.setItem('id' ,JSON.stringify(sess_id));

        // Put the object into storage
        localStorage.setItem('name' ,JSON.stringify(name));

        // Put the object into storage
        localStorage.setItem('city',JSON.stringify(city));

        // Put the object into storage
        localStorage.setItem('country',JSON.stringify(country));

        // Put the object into storage
        localStorage.setItem('event_url',JSON.stringify(event_url));


        // Put the object into storage
        localStorage.setItem('imageUrl',JSON.stringify(imageUrl));

第2步。

     /* fetch the data using from localstorage */
        var id= [];
        var name= [];
        var city = [];
        var country =[];
        var event_url= [];

        // Retrieve the object from storage
        //var id, city, country,event_url;


        var id = localStorage.getItem('id');
        console.log(id);
        id = JSON.parse(id);
        var name = localStorage.getItem('name');
        name = JSON.parse(name);
        console.log(name);

        var name = localStorage.getItem('name');
        name = JSON.parse(name);

        var city = localStorage.getItem('city');
        city = JSON.parse(city);
        console.log(city);

        var country = localStorage.getItem('country');
        country = JSON.parse(country);
        console.log(country);

        var event_url = localStorage.getItem('event_url');
        event_url = JSON.parse(event_url);
        ///console.log(event_url);

        var image_url = localStorage.getItem('imageUrl');
        //event_url = JSON.parse(event_url);
        alert(image_url);
        console.log(image_url);

这里是快照:

enter image description here

  • 我需要在数组中存储更多字符串。
  • 我尝试过console.log(id.length)// undefined。
  • 我还看了循环以在localstoarge中存储更多值。

    for (var i = 0; i < localStorage.length; i++) {
     console.log(localStorage.key(i))
       };
    

2 个答案:

答案 0 :(得分:3)

您可以对整个对象进行字符串化并一次保存所有内容:

localStorage.setItem('event', JSON.stringify({
    id: sess_id,
    name: name,
    city: city,
    country: country,
    event_url: event_url,
    imageUrl: imageUrl
}));

它还会使代码更简单,更短:

function favaorite(sess_id, name, city, country, event_url, pointer) {

    /* store imageurl in localstorage */
    var imageUrl = '/images/star1_phonehover.png';

    // Save data to the current local store//
    if (typeof (localStorage) == 'undefined') {
        console.log('Your browser does not support HTML5 localStorage. Try upgrading.');
    } else {
        try {
            // Put the object into storage
            localStorage.setItem('event', JSON.stringify({
                id: sess_id,
                name: name,
                city: city,
                country: country,
                event_url: event_url,
                imageUrl: imageUrl
            }));
        } catch (e) {
            if (e == QUOTA_EXCEEDED_ERR) {
                console.log('Quota exceeded!'); //data wasn't successfully saved due to quota exceed so throw an error
            }
        }
    }
}

检索已保存的事件数据,您只需反向执行:

var eventData = JSON.parse(localStorage.getItem('event'));

答案 1 :(得分:1)

试试这个,

你已经创建了一个对象,并在每次点击时填写详细信息,将该对象推送到一个数组中,并使用JSON.stringify()将该数组存储在本地存储中。

同时检索再次使用JSON.parse()解析该JSON。

    function favaorite(sess_id,name,city,country,event_url,pointer){
       var eventData = JSON.parse(localStorage.getItem('eventData '));
       if(eventData ==null){
           eventData=[];
       }

       Var details={};

       details["sess_id"]=sess_id;
       details["name"]=name;
       details["city"]=city;
       details["country"]=country;
       details["event_url"]=event_url;
       details["pointer"]=pointer;

      eventData.push(details);

      localStorage.setItem('eventData', JSON.stringify(eventData));
    }

在检索将字符串解析为json时,您将获得这些点击事件详细信息的数组。

var EventDetails=JSON.parse(localStorage.getItem('eventData '));
相关问题