You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何实现页面刷新时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

火山引擎 最新活动