为会话存储命名对象

时间:2015-04-12 23:21:22

标签: javascript jquery html5 session-storage

我在对象中保存了许多驱动程序:

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

2 个答案:

答案 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();
相关问题