加载localStorage不会更新我的变量

时间:2017-11-13 09:42:17

标签: javascript html html5 function local-storage

我得到了这些变量

var moneycount = 0;
var b1 = document.createElement("IMG");

function update() {
  document.getElementById('money').innerHTML = moneycount;
}

用于保存/加载的功能

function save() {
  localStorage.setItem("moneycount", moneycount);
};

function load() {
  moneycount = localStorage.getItem("moneycount");
  moneycount = parseInt(moneycount);
  update();
};

此功能按预期工作,但不会使用localStorage

更新
function add() {
  moneycount = moneycount + 1
  if (moneycount >= 1) {
    document.getElementById('badge1').appendChild(b1);
  }
  update();
}

加载localStorage后,似乎var moneycount = 0仍为0,因为if (moneycount >= 1)无效。加载localStorage后,document元素仍然显示更大的数字。关于如何存储我的add()功能的任何想法?

编辑:
找到了一个临时解决方案,设置setInterval(save, 5000);并添加<body onload="load();">并在刷新时调用它。

2 个答案:

答案 0 :(得分:0)

这是因为你没有更新localStorage而只是更新html元素:应该按照以下步骤进行:

var moneycount = 0;
var b1 = document.createElement("IMG");

    function update() {
      document.getElementById('money').innerHTML = moneycount;
    localStorage.setItem("moneycount", moneycount);

    }



    function save() {
      localStorage.setItem("moneycount", moneycount);
    };





    function add() {
      localStorage.getItem("moneycount")+=  1;
      if (moneycount >= 1) {
        document.getElementById('badge1').appendChild(b1);
      }
      update();
    }

答案 1 :(得分:-1)

原因是(如评论中所述)您的load()函数也会保存localStorage而不是检索值。

您的load()功能应如下所示:

function load() {
  moneycount = localStorage.getItem("moneycount");
  update();
};