【问题标题】:store the localstorage value in the form of json以json的形式存储localstorage值
【发布时间】:2016-05-03 09:07:53
【问题描述】:

您好,我正在尝试在本地存储中保存一些 input[type="text"] 和 input[type="hidden"] 值。下面是JS:

$('.proceed_btn').on('click', function(){

    $('input[type="text"]').each(function(){    
      var id = $(this).attr('id');
      var value = $(this).val();
      localStorage.setItem(id, value);
    }); 
    $('input[type="hidden"]').each(function(){    
      var id = $(this).attr('id');
      var value = $(this).val();
      localStorage.setItem(id, value);
    }); 

});

价值得到完美存储。但我想以 json 格式存储这些值。但是如何将这两个值保存在一个变量中。例如:

order: {
   id: '', 
   product: '',
   service: '',
   name: ''
} 

我已经检查了 JSON 字符串化,但是如何同时使用不同类型的输入来实现

【问题讨论】:

  • 我在尝试忘记删除代码。

标签: javascript jquery


【解决方案1】:

只需构建一个对象,然后stringify 它。例如,如果我假设您的 input 元素的 name 是您要在对象上使用的名称:

$('.proceed_btn').on('click', function(){
    // Blank to start with
    var order = {};

    // Loop through all inputs...
    $('input[type="text"], input[type="text"]').each(function(){
      // ...adding their values as properties
      order[this.name] = this.value;
    }); 

    // Store that object in JSON format
    localStorage.setItem("order", JSON.stringify(order));
});

稍后,如果您想检索它并根据其值设置输入:

var order = JSON.parse(localStorage.getItem("order") || "null");
if (order) {
    $('input[type="text"], input[type="text"]').each(function(){
        if (this.name in order) {
            this.value = order[this.name];
        } else {
            this.value = "";
        }
    });
}

【讨论】:

  • 我的想法和这个完全一样。这应该解决OP的问题。并检查浏览器是否支持 LocalStorage if(typeof(Storage) !== 'undefined')
  • 它没有在本地存储中打印任何内容
【解决方案2】:

写localstorage的时候只有2个参数:

例如。 localStorage.setItem('汽车', 汽车); 第一个参数实际上是键,第二个参数是值;

你传递了 3 个错误的参数。

如果您可以在本地存储中存储多个值,请创建该值的对象并将该对象写入本地存储:

ex.

var car = {};
car.wheels = 4;
car.doors = 2;
car.sound = 'vroom';
car.name = 'Lightning McQueen';
console.log( car );
localStorage.setItem('car', JSON.stringify(car));
console.log( JSON.parse( localStorage.getItem( 'car' ) ) );

【讨论】:

  • 好的,但是如何将这些值以 jason 格式存储在一个变量中
  • 我已经更新了上面的答案并描述了如何以 json 格式存储多个值
  • @PreetyAngel:它是 JSON。不是杰森或杰森。 JavaScriptObjectNotation.
  • 你可以像 localStorage.setItem('car', JSON.stringify(car));
【解决方案3】:

我认为这会有所帮助。

var objectToSave = {};
$('.proceed_btn').on('click', function(){

$('input[type="text"],input[type="hidden"]').each(function(){
  var elem = $(this);
  var id = elem.attr('id');
  var value = elem.val();
  objectToSave[id] = value;
}); 
  localStorage.setItem('order', JSON.stringify(objectToSave));
});

【讨论】:

  • 你能指定你需要在本地存储中保存的实际字符串吗?它不只是印刷价值吗? id 和 type 呢
  • 我希望这些值以 json 格式存储在本地存储中。 date_slot document_id no-of-copies product service_id stamp_amount
  • 我在本地存储中获取这个值 Order:{"id":"no-of-copies","value":"0","type":"hidden"}
  • 它有效 :) 比 kyou 和 T.J Crowder 代码也有效 :) 谢谢 :)
  • 那么,您将您的答案编辑为与我 45 分钟前的答案不太完整的副本?不是很酷。 @PreetyAngel:仅供参考
猜你喜欢
  • 2015-06-12
  • 1970-01-01
  • 1970-01-01
  • 2013-02-09
  • 1970-01-01
  • 1970-01-01
  • 2015-07-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多