我正在尝试将数据保存到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));
};
答案 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'
也;你的代码中没有课程。