为了将值保存在本地存储中,我很难理解自己在代码中做错了什么。
我有一个相当大的代码项目,所以我将尝试总结该程序在整体上尝试的功能。
我正在从新闻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");
放在代码的开头,这是第一个函数没有运气的时候。
非常感谢您的帮助! 对于任何格式问题,我们深表歉意。
答案 0 :(得分:1)
每次单击事件overallsum
都会被设置,这就是问题所在。如果overallsum
是一次性存储到本地存储,则可以检查overallsum
的值是否为null
,如果是,则是第一次存储该值。
示例:
if (localStorage.getItem("overallsum") === null) {
localStorage.setItem("overallsum", sum);
}
否则,如果overallsum
是什么,那么对于每篇文章,您都可以进行2D数组处理,然后使用相同的条件检查来设置值。