在localforage

时间:2017-07-18 15:22:18

标签: javascript localforage

我使用localForage离线存储数据。在使用setItem方法向key存储添加键值时,我想生成key_1,activity_2,activity_3等键的值,这是在我提交表单时生成的。因此,对于我提交的每个表单,它应该以不同方式生成键值。

以下是代码:

var getActivity = document.getElementById('getActivity'),
    fetchVal = document.getElementById('fetchVal'),
    log_form = document.getElementById('log_form');

function activityArr() {
  var i = 1;
  if(i > 0){
    var keyVal = 'activity_' + i;
  }
  i++;
  return keyVal;
}

log_form.addEventListener('submit', function(e){
  e.preventDefault();
  localforage.setItem(activityArr(), getActivity.value)
    .then(function (val) {
      console.log(val);
    }).catch(function(err){
      console.log(err);
    });
    localforage.keys().then(function(keys) {
    console.log(keys);
}).catch(function(err) {
    console.log(err);
});
});

此处有codepen个链接供参考。

但在我的情况下,它会生成关键的活动_1和#3;对于我提交的每一份表格。因此,它会覆盖存储在' activity_1'。

中的先前值

只需尝试提交表单2-3次,然后打开开发人员控制台即可查看结果。

每当我提交表单时,如何以不同方式生成密钥。

1 个答案:

答案 0 :(得分:0)

不要让i变量为local。每次调用该函数时,i变量都会重置为1.

var i = 1;
function activityArr() {
  if(i > 0){
    var keyVal = 'activity_' + i;
  }
  i++;
  return keyVal;
}