javascript - 页面刷新后不存储本地存储
问题描述
为了将值保存在本地存储中,我很难理解我在代码中做错了什么。
我有一个相当大的代码项目,所以我会尝试总结一下程序总体上要做什么。我正在从新闻 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");
代码放在开头,第一个函数的时候却没有运气。
非常感谢你的帮助!并对任何格式问题表示歉意,我对此非常陌生。
解决方案
每次单击该事件时,overallsum
都会设置,这就是问题所在。如果overallsum
是一次存储到本地存储,那么您可以检查的值是否overallsum
是null
,如果是,则第一次存储该值。
例子:
if (localStorage.getItem("overallsum") === null) {
localStorage.setItem("overallsum", sum);
}
否则,如果overallsum
是某些东西,那么对于每个单独的文章,您可以使用 2D 数组,然后使用相同的条件检查设置值。
推荐阅读
- java - Java Swing 在线程“AWT-EventQueue-0”中读取 PDF 返回异常 java.lang.NoClassDefFoundError: org/bouncycastle/asn1/ASN1OctetString
- javascript - 在这两种情况下,我如何将 newLog 的值打印为空白
- html - 如何在屏幕中心对齐 CSS 框?
- c# - 列表中的Linq选择列表
- linkedin - LinkedIn 通过我们自己的应用程序共享,无法滚动
- reactjs - Firestore 使用 React.js 取消订阅其他功能
- java - 在Java中将数据插入到地图列表中花费了太多时间
- javascript - 如何监视组件中的 vuex 突变/动作?
- android - 错误:无法使用 viewpager2 中 FragmentStateAdapter 中提供的参数调用以下函数
- javascript - 在 onClick 操作后,React 的动态表不会重新渲染