我在对象中保存了许多驱动程序:
function Driver(draw, name) {
this.draw = draw;
this.name = name;
}
现在,驱动程序的数量可能会根据我的表单的使用方式而改变。它可能是5,可能是60.
我对使用HTML5会话存储的理解是这样的语法:
sessionStorage.setItem(' name',value)。
我想要的是能够使用名称driver1,driver2,driver,3等保存它们。但是,这些数字不会是连续的,可能包含任何高达60的数量。< / p>
以下是我尝试过的方法,但它不起作用。
$('.print').click(function () {
for (var i = 0; i < 60; i++){
var name3 = "."+"driver"+i;
if (typeof Driver[name3] != "undefined") {
console.log(name3);
console.log(Driver[name3]);
sessionStorage.setItem(Driver[name3], JSON.stringify(Driver[name3]));
console.log(sessionStorage.getItem(Driver[name3]));
entries[entries.length] = name3;
}
console.log(entries);
sessionStorage.setItem('entries', JSON.stringify(entries));
};
我尝试做的是为var name3设置一个值,然后将会话存储文件的名称设置为该值。对我来说很明显我无法做到这一点。我无法找到实现目标的另一种方法吗?
仅供参考,我尝试sessionStorage&#39; Entries&#39;工作得很好。
如果你需要摆弄它,请点击我的整个项目:http://precisioncomputerservices.com/slideways/index.html
答案 0 :(得分:0)
它是作为评论发布的,但它是答案。
将所有内容存储在数组中。
var allMyDrivers = [...];
sessionStorage["drivers"] = JSON.stringify(allMyDrivers);
var driversLater = JSON.parse(sessionStorage["drivers"]);
答案 1 :(得分:0)
因为构造函数参数可以从 Objects 中检索,所以你可以在retreival函数中再次通过构造函数传递它们
function storeDrivers(arr) {
sessionStorage.setItem('drivers', JSON.stringify(arr));
}
function retrieveDrivers() {
var arr = JSON.parse(sessionStorage.getItem('drivers')) || [];
return arr.map(function (e) {return new Driver(e.draw, e.name);});
}
function forgetDrivers() {
sessionStorage.removeItem('drivers');
}
storeDrivers([
new Driver('foo', 'bar'),
new Driver('fizz', 'buzz')
]);
retrieveDrivers();
// [
// Driver {draw: "foo", name: "bar"},
// Driver {draw: "fizz", name: "buzz"}
// ]
forgetDrivers();