繁体   English   中英

如何在刷新浏览器不更改值(JavaScript)的localStorage中保存?

[英]How to save in localStorage that refreshing browser do not change the value (JavaScript)?

我有一个点击计数器。 每一次点击都会增加价值。 我想保存到本地存储中,刷新页面保留值 现在它将值保存在本地存储中,但如果我刷新浏览器则不会保留它。 我应该在我的代码中进行哪些更改以使其正常工作?

let countedClicks = 0;
    
const countingClicks = () => {
  countedClicks += 1;
  localStorage.setItem("btnClicksSaved", countedClicks);
  let savedClicks = localStorage.getItem("btnClicksSaved");
  clicks.innerHTML = `${savedClicks} times`;
  console.log(countedClicks + "counted");
  console.log(savedClicks + "local storage");

  if (savedClicks > 5) {
    resetBtn.style.display = "flex";
  } else {
    resetBtn.style.display = "none";
  }
};

您应该首先获取数据,否则它将始终以 0 开头。

let countedClicks = parseInt(localStorage.getItem("btnClicksSaved") ?? '0');
    
const countingClicks = () => {
  countedClicks += 1;
  localStorage.setItem("btnClicksSaved", countedClicks);
  let savedClicks = localStorage.getItem("btnClicksSaved");
  clicks.innerHTML = `${savedClicks} times`;
  console.log(countedClicks + "counted");
  console.log(savedClicks + "local storage");

  if (savedClicks > 5) {
    resetBtn.style.display = "flex";
  } else {
    resetBtn.style.display = "none";
  }
};

因为您正在从内存中读取计数点击次数(使用变量countedClicks )。 您应该直接从本地存储中读取它。 刷新页面后变量值会丢失,因为它们保存在内存中,另一方面,本地存储数据保存到磁盘中。

 const countingClicks = () => { let savedClicks = localStorage.getItem("btnClicksSaved"); if (savedClicks === null) { localStorage.setItem("btnClicksSaved", 0); savedClicks = localStorage.getItem("btnClicksSaved"); } const countedClicks = parseInt(savedClicks) + 1; localStorage.setItem("btnClicksSaved", countedClicks); savedClicks = localStorage.getItem("btnClicksSaved"); clicks.innerHTML = `${savedClicks} times`; console.log(countedClicks + "counted"); console.log(savedClicks + "local storage"); if (savedClicks > 5) { resetBtn.style.display = "flex"; } else { resetBtn.style.display = "none"; } };

尝试这个

/* load value from localStorage first */
let countedClicks = localStorage.getItem("btnClicksSaved");
/* there's no "btnClicksSaved" in localStorage
 * when you visited the site for the first time, so set the value to "0" */
if (countedClicks != null) { return } else { countedClicks = 0 }

const countingClicks = () => {
  /* no need to change anything here */
} 

Localstorage 只能接受字符串,并且countedClicks不是字符串。 您可以使用内置的 JSON 对象在数据进出本地存储时对数据进行字符串化和解析,例如:

let countedClicks = 0;

const countingClicks = () => {
  countedClicks += 1;
  localStorage.setItem('btnClicksSaved', JSON.stringify(countedClicks));
  let savedClicks = JSON.parse(localStorage.getItem('btnClicksSaved'));
  clicks.innerHTML = `${savedClicks} times`;
  console.log(countedClicks + 'counted');
  console.log(savedClicks + 'local storage');

  if (savedClicks > 5) {
    resetBtn.style.display = 'flex';
  } else {
    resetBtn.style.display = 'none';
  }
};

这是我用的东西

function main() {
    var count = parseInt(localStorage.getItem('countX'));
    if(count > 0) {
        count = count +1;
        localStorage.setItem('countX', count);

    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM