如何实现页面刷新时Div背景色两色非重复切换
实现刷新页面时无重复切换div背景色的方法
嘿,刚好碰到过类似的需求!你现在的代码是随机从两个颜色里选,但确实会出现连续两次刷新用同一种颜色的情况。要解决这个问题,我们可以用**本地存储(localStorage)**来记住上一次使用的背景色,这样每次刷新时就能直接切换到另一种颜色,完美避免重复。
先给你直接上可以用的代码,我还修正了你原来代码里的小拼写问题(backgroundcolor要改成驼峰式的backgroundColor,jQuery的css方法才认):
// 预设的两种背景色 const bgColorList = ["#BAF3C3", "#c3baf3"]; // 目标div元素 const $datetime = $("#datetime"); // 读取上一次存在本地的颜色 const lastUsedColor = localStorage.getItem("lastBgColor"); let currentColor; if (lastUsedColor) { // 如果有记录,直接选列表里和上次不一样的那个颜色 currentColor = bgColorList.find(color => color !== lastUsedColor); } else { // 第一次加载页面,随机选一个颜色作为初始值 currentColor = bgColorList[Math.floor(Math.random() * bgColorList.length)]; } // 设置div的背景色 $datetime.css("backgroundColor", currentColor); // 把当前用的颜色存到本地,下次刷新时用 localStorage.setItem("lastBgColor", currentColor);
代码逻辑说明:
- localStorage的作用是在用户的浏览器里持久化保存数据,即使页面刷新、关闭浏览器再打开,这个记录依然存在(除非手动清除浏览器缓存)
- 第一次加载页面时,本地没有存储的颜色,我们随机选一个,保证初始状态的随机性
- 之后每次刷新,都会先读取上一次的颜色,然后直接切换到另一种,绝对不会重复
- 如果你以后想扩展更多颜色,只需要修改
bgColorList,然后把逻辑改成从过滤掉上次颜色的列表里随机选就行,适配性很强
内容的提问来源于stack exchange,提问作者Hristian Yordanov




