首页 > 解决方案 > 页面刷新后不存储本地存储

问题描述

为了将值保存在本地存储中,我很难理解我在代码中做错了什么。

我有一个相当大的代码项目,所以我会尝试总结一下程序总体上要做什么。我正在从新闻 API 中提取新闻文章并显示文章;每篇文章(取决于它来自的出版物)将不同的数值推入数组allSource2中。然后我将这个数组的总和得出一个“分数”(称为变量sum

我基本上希望将该分数存储在本地,以便即使在页面刷新后也可以使用它。localStorage我认为由于我放置函数的位置可能会发生错误。目前我把它放在点击事件下,该事件也推送数组中的数值(当你点击文章标题时)。我对它可能在哪里感到非常困惑,因此sum每次总和发生变化时它都会真正更新。

此外,它确实可以存储它(我localStorage在控制台上检查过,刷新后它仍然有效,但是在刷新然后单击另一篇文章后,它会重置为这篇文章的值)

我没有放整个代码,因为它太长了。其他一切正常,就是这样。此外,所有这些都包含在一个大功能中

let sum =0;在代码的开头定义。然后,这就是点击事件。

document.getElementsByClassName('article-rating')[i]
  .addEventListener('click', function(event) {

    sum = allSource2.reduce((tempSum, val) => tempSum + val);
    console.log("article score is now" + " " + sum);
    var lastname = localStorage.getItem("overallsum");
    localStorage.setItem("overallsum", sum);


 });

我也试着把var lastname = localStorage.getItem("overallsum");代码放在开头,第一个函数的时候却没有运气。

非常感谢你的帮助!并对任何格式问题表示歉意,我对此非常陌生。

标签: javascriptlocal-storage

解决方案


每次单击该事件时,overallsum都会设置,这就是问题所在。如果overallsum是一次存储到本地存储,那么您可以检查的值是否overallsumnull,如果是,则第一次存储该值。

例子:

if (localStorage.getItem("overallsum") === null) {
  localStorage.setItem("overallsum", sum);
}

否则,如果overallsum是某些东西,那么对于每个单独的文章,您可以使用 2D 数组,然后使用相同的条件检查设置值。


推荐阅读