页面刷新后未存储本地存储

时间:2019-03-23 21:21:01

标签: javascript local-storage

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

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

我基本上希望将该分数存储在本地,以便即使在刷新页面后也可以使用。 我认为可能由于我将localStorage函数放在何处而发生了错误。目前,我将它放在click事件下,该事件也将数字值推送到数组中(当您单击文章标题时)。 我对可能的其他位置感到非常困惑,因此每次总和发生更改时,它都会真正更新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");放在代码的开头,这是第一个函数没有运气的时候。

非常感谢您的帮助! 对于任何格式问题,我们深表歉意。

1 个答案:

答案 0 :(得分:1)

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

示例:

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

否则,如果overallsum是什么,那么对于每篇文章,您都可以进行2D数组处理,然后使用相同的条件检查来设置值。