1

我正在尝试学习 javascript,并且正在尝试找出项目的本地存储。但首先我相信我需要从我的团队构造函数中以编程方式构建密钥。

 var Team = function(team, manager, cell, add1, add2, city, st, zip, sponsor) {
  this.team = team;
  this.manager = manager;
  this.cell = cell;
  this.add1 = add1;
  this.add2 = add2;
  this.city = city;
  this.st = st;
  this.zip = zip;
  this.sponsor = sponsor;
  };

这是来自我构建的表单,现在我想构建本地存储。这是我失败的尝试:

 function saveTeam() {
 for (var i = 0; i < Team.length; i++) {
 localStorage["league." + i "." + javascriptNameOfProperty ] = $('#'+ javascriptNameOfPropertyName + ').val() };

或类似的东西。我试过“property”、“key”和我试过的其他方法不适用于 javascriptNameofProperty。当然,一旦我弄清楚了,我当然必须弄清楚本地存储。

4

3 回答 3

2

在这种情况下,您可以使用对象文字而不是构造函数(我在您发布的代码中没有看到构造函数的任何原因,并且您应该使用 实例化对象new,而您不是)。考虑使用它(假设您传递给的所有变量Team都已定义):

var team = {
    team : team,
    manager : manager,
    cell : cell,
    add1 : add1,
    add2 : add2,
    city : city,
    st : st,
    zip : zip,
    sponsor : sponsor
}

这可以使用以下代码进行迭代:

for(var key in team) {
    localStorage["league." + key] = team[key];
}

我认为这并没有完全按照您的原始代码试图做的那样做,但是不清楚您是否有多个团队,它们是如何创建的,以及它们是如何使用的。我希望这将有所帮助。

于 2012-07-31T19:46:39.050 回答
1

团队是一个函数,而不是一个数组。

我会假设你确实有一组团队。

您需要使用for in循环:

var teams = [ ... ];

for (var i = 0; i < teams.length; i++) {
    for (var key in team) {
        localStorage["league." + i + "." + key] = $('#' + key).val()
    }
}
于 2012-07-31T19:42:30.540 回答
1

要从其他人身上建立一点点,你也可以这样做。

var Team = function(team, manager, cell, add1, add2, city, st, zip, sponsor) {
  this.team = team;
  this.manager = manager;
  this.cell = cell;
  this.add1 = add1;
  this.add2 = add2;
  this.city = city;
  this.st = st;
  this.zip = zip;
  this.sponsor = sponsor;
};

Team.prototype.save = function () { 
  for ( var prop in this )
  { 
    if (this.hasOwnProperty(prop))
      console.log('%s => %s', prop, this[prop]);
      // your localStorage saving logic goes here
  }
};

var t = new Team('vteam','vmanager','vcell','vadd1','vadd2','vcity','vst','vzip','vsponors');

t.save();

这将只保存 Team 对象的属性(在团队函数this.prop中定义的任何内容。

于 2012-07-31T19:51:27.623 回答