将数据保存在localstorage中

时间:2016-07-08 18:56:11

标签: javascript

我正在尝试将数据保存到localstorage。通过构造函数创建“类”并尝试将get和set方法放到它们中。但是,当我单击我的按钮时(单击按钮时数据必须保存)没有任何反应(在开发人员工具“资源”选项卡中)。当我尝试通过JSON.stringify进行简单的保存数据时,一切都运行了。

(function() {
  window.onload = function() {
    document.getElementById('buttonCreate').onclick = function() {
      var topicValue = document.getElementById("create-topic").value;
      var statusValue = document.getElementById("create-status").value;
      var descriptionValue = document.getElementById("create-description").value;
      var storage = new Storage();
      var ticket = {
        topic: topicValue,
        status: statusValue,
        description: descriptionValue
      };
      storage.set("Item", item);
    }
  }
})();

“class”存储:

function Storage() {
  this._ITEMS_DESCRIPTOR = 'items';
}
Storage.prototype.get = function() {
  var fromStorage = localStorage.getItem(this._ITEMS_DESCRIPTOR);
  return fromStorage ? JSON.parse(fromStorage) : [];
};
Storage.prototype.set = function(key, items) {
  localStorage.setItem(key, JSON.stringify(items));
};

2 个答案:

答案 0 :(得分:0)

您的代码的确切问题是存储密钥以及您尝试存储的item未定义的问题。

  • 它将其存储到Item密钥中,并编写get方法以从密钥items中获取它。
  • 通过查看给定的代码,您应该假设存储ticket对象。 storage.set(ticket);

建议的更好方法:传递key以实例化Storage对象,然后相应地使用它。

例如var storage = new Storage('Item');

(function() {
  window.onload = function() {
    document.getElementById('buttonCreate').onclick = function() {
      var topicValue = document.getElementById("create-topic").value;
      var statusValue = document.getElementById("create-status").value;
      var descriptionValue = document.getElementById("create-description").value;
      var storage = new Storage("ticket");
      var ticket = {
        topic: topicValue,
        status: statusValue,
        description: descriptionValue
      };
      storage.set(ticket);
    }
  }
})();

"类"存储:

function Storage(key) {
  this._ITEMS_DESCRIPTOR = key;
}
Storage.prototype.get = function() {
  var fromStorage = localStorage.getItem(this._ITEMS_DESCRIPTOR);
  return fromStorage ? JSON.parse(fromStorage) : {};
};
Storage.prototype.set = function(item) {
  localStorage.setItem(this._ITEMS_DESCRIPTOR, JSON.stringify(item));
};

获取存储在localstorage中的票证值:

var storage = new Storage('ticket');
var ticket = storage.get();

答案 1 :(得分:-1)

根据Mike McCaughan的评论,你引用了一个未定义的变量。

使用严格模式会抓住这个。

您在用于处理存储中的项目的密钥中还有另一个错误:

'items' !== 'Item'

也;你的代码中没有课程。