如何实现每日(24小时)生成随机数,刷新不改变且次日自动更新
实现每日固定、次日自动更新的随机数功能
要实现当日刷新浏览器随机数不变,次日自动生成新数的需求,核心是通过本地存储持久化随机数和对应的日期标识,每次页面加载时校验日期来决定复用旧数还是生成新数。以下是修改后的完整代码:
<script type="text/javascript"> // 生成当日的YYYY-MM-DD格式日期,作为判断日期的唯一标识 function getTodayDateKey() { const today = new Date(); return `${today.getFullYear()}-${String(today.getMonth() + 1).padStart(2, '0')}-${String(today.getDate()).padStart(2, '0')}`; } const elements = document.getElementsByClassName("result"); const dateKey = getTodayDateKey(); // 从localStorage读取已存储的随机数和日期信息 const storedData = JSON.parse(localStorage.getItem('dailyRandomNumber')) || {}; let randomNumber; // 校验存储的日期是否与当日一致 if (storedData.date === dateKey) { // 日期一致,复用已存储的随机数 randomNumber = storedData.number; } else { // 日期不一致,生成新的随机数(范围:99999 ~ 109998) randomNumber = Math.floor((Math.random() * 10000) + 99999); // 将新随机数和当日日期存入localStorage localStorage.setItem('dailyRandomNumber', JSON.stringify({ date: dateKey, number: randomNumber })); } // 更新所有带有result类的元素内容 for (let element of elements) { element.innerText = randomNumber; } </script>
关键逻辑说明
- 日期标识:通过
getTodayDateKey生成标准格式的当日日期,确保不同日期的判断唯一且准确 - 本地存储:使用
localStorage保存随机数和日期,关闭浏览器后数据不会丢失,刷新页面时可直接读取 - 校验逻辑:每次页面加载时先对比存储的日期和当日日期,一致则复用旧数,否则生成新数并更新存储
内容的提问来源于stack exchange,提问作者yucos eko
相关产品推荐
相关产品推荐

