向localstorage添加值,而不是替换它

时间:2016-03-05 11:47:07

标签: javascript jquery html css

我希望将newUsername的值添加到localStorage setUsernamesArray ,而在我的代码中,它会替换整个值。

代码

$('#signUpButton').click(function() {
  var newUsername = $('#usernameSignInBox').val();
  signedUpUsernames.push(newUsername);
  localStorage.setItem('setUsernamesArray', signedUpUsernames);
});

3 个答案:

答案 0 :(得分:2)

localStorage始终将值存储为string,因此stringify array存储,

localStorage.setItem('setUsernamesArray', JSON.stringify(signedUpUsernames));

在阅读之前只需parse

var arrayFrmStorage = JSON.parse(localStorage.getItem("setUsernamesArray"))

答案 1 :(得分:2)

如果要添加到数组中,您必须意识到localStorage中的值不是数组,而是字符串。如果您希望该字符串表示一个数组,并且您想要更新该数组,则必须执行以下操作:

  • 阅读字符串localStorage.getItem('setUsernamesArray')
  • 然后将其转换为包含JSON.parse
  • 的数组
  • 然后推送到阵列,
  • 然后使用localStorage.setItem('setUsernamesArray', JSON.stringify(array))
  • 再次存储它

答案 2 :(得分:2)

localStorage.setItem将替换localStorage中键的值。

将localStorage视为变量。当你做的时候

var a = "Hello";
a = " World"

a的值被替换。为避免这种情况,我们使用+=

var a = "Hello";
a += " World"

类似地,您必须创建具有更新值的另一个对象并将其写入localStorage。

以下是一个例子。

function setValueToLS(key, prop, value){
  var _local = {};
  if(localStorage.getItem(key))
    _local = JSON.parse(localStorage.getItem(key));

  _local[prop] = value;

  localStorage.setItem(key, JSON.stringify(_local));
}