1

我正在处理由 HTML5 本地存储保存的表单。

按保存时:

function saveAll(){
  var field1 = document.getElementById('field1').value;
  localStorage.setItem('con_field1',field1);
  var field2 = document.getElementById('field2').value;
  localStorage.setItem('con_field2',field2);
  var field3 = document.getElementById('field3').value;
  localStorage.setItem('con_field3',field3);
  var field4 = document.getElementById('field4').value;
  localStorage.setItem('con_field4',field4);
  var field5 = document.getElementById('field5').value;
  localStorage.setItem('con_field5',field5);
  var field6 = document.getElementById('field6').value;
  localStorage.setItem('con_field6',field6);
}

并且在加载页面时(填写表格):

function ShowAll() {
  var field1 = localStorage.getItem('con_field1');
  document.conditioning.field1.value = field1;
  var field2 = localStorage.getItem('con_field2');
  document.conditioning.field2.value = field2;
  var field3 = localStorage.getItem('con_field3');
  document.conditioning.field3.value = field3;
  var field4 = localStorage.getItem('con_field4');
  document.conditioning.field4.value = field4;
  var field5 = localStorage.getItem('con_field5');
  document.conditioning.field5.value = field5;
  var field6 = localStorage.getItem('con_field6');
  document.conditioning.field6.value = field6;
}

这一切都很好,但我想以一种更花哨和有效的方式重新编写它。我在想这样的事情:

function ShowAll() {
  var field = [];
  for (i=0; i<6; i++) {
    field[i] = localStorage.getItem(window['con_field' + i]);
    document.purpose.field[i].value = window['con_field' + i]
  }
}

但是浏览器不喜欢这个。基本上我需要创建一个循环,自动将“字段”名称更改为“field1、field2、field3”等。窗口的东西正在工作,但我只是用错了。

有人有想法吗?

非常感谢!

4

4 回答 4

3
function showAll(t1,c1,d1)  {
    var field1 = localStorage.getItem('con_field1');
    console.log(field1)
    var field2 = localStorage.getItem('con_field2');
    var field3 = localStorage.getItem('con_field3');
}
于 2016-10-07T12:39:47.437 回答
2

您应该将所有数据添加到一个对象,对其进行字符串化,然后将其添加到单个键下的本地存储中。

当你加载它时,抓取一个本地存储项,解析它,然后访问对象的属性。

例如

var save = function () {
    var data = {
        foo: 'bar'
    };

    localStorage.setItem('myData', JSON.stringify(data));
};

var load = function () {
    var data = JSON.parse(localStorage.getItem('myData'));

    var someProp = data.foo; // gives you 'bar'
};
于 2012-07-09T17:23:17.757 回答
1

看起来您的主要问题是字段的索引从 1 开始,但您的循环索引从 0 开始。

那这个呢?

var field = [];
for (i = 1; i <= 6; i++)
{
  field[i] = localStorage.getItem(window['con_field' + i]);
  document.purpose.field[i].value = window['con_field' + i]
}

此外,我不是 100% 对此表示赞同,但我认为使用document.getElementByID比在窗口对象上使用括号表示法更能跨浏览器兼容,但我已经有一段时间没有写普通的香草 JS 了,所以不要引用我的话。

于 2012-07-09T17:20:56.673 回答
0

我会尝试document.purpose["field" + i].value = window['con_field' + i]

于 2012-07-09T17:20:46.970 回答