You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript实现网站首页多张图片每日自动更换?

实现每日自动更换首页图片方案

针对你需要每日自动替换首页9张动态图片的需求,以下是具体的JavaScript实现方案,核心思路是通过日期计算固定每日的图片组,避免刷新页面就变更内容,同时将所有图片链接统一管理:

步骤1:整理图片数据

首先把所有500+张图片的路径、对应跳转链接整理成数组,建议单独放在一个JS文件(比如imageData.js)里,方便后续维护:

// imageData.js
export const allImages = [
  { imgSrc: 'images/deadhome/jamaledwards.png', linkHref: 'files/jamaledwards', alt: 'Jamal Edwards' },
  { imgSrc: 'images/deadhome/margaretjohn.png', linkHref: 'files/margaretjohn', alt: 'Margaret John' },
  // 继续添加剩余所有图片的信息...
  { imgSrc: 'images/deadhome/brookemccarter.png', linkHref: 'files/brookemccarter', alt: 'Brooke McCarter' }
];

步骤2:调整HTML结构(可选但更高效)

给需要替换的9个<a>标签添加统一类名(比如dynamic-img-link),方便JS精准选择元素,避免误操作首尾固定的图片:

<h3 class="no-title">Recently Added</h3>
<div class="no">
  <img src="images/move.png" alt="Move">
  <!-- 给动态图片的a标签加统一类 -->
  <a class="dynamic-img-link" href="files/jamaledwards"><img src="images/deadhome/jamaledwards.png" alt=""></a>
  <a class="dynamic-img-link" href="files/margaretjohn"><img src="images/deadhome/margaretjohn.png" alt=""></a>
  <!-- 剩余7个动态a标签同样添加该类 -->
  <a href="#search22"><img src="images/search.png" alt="Search"></a>
</div>

步骤3:编写核心替换逻辑

在页面的JS文件中引入图片数据,通过日期计算每日固定的图片组,实现自动替换:

// 引入图片数据(如果单独放在外部文件)
import { allImages } from './imageData.js';

// 计算从指定起始日到今天的天数,作为每日固定的偏移量
function getDailyOffset() {
  const startDate = new Date('2024-01-01'); // 可自定义起始日期,确保之前的日期不会重复
  const today = new Date();
  // 忽略时分秒,只按日期计算
  today.setHours(0, 0, 0, 0);
  startDate.setHours(0, 0, 0, 0);
  return Math.floor((today - startDate) / (1000 * 60 * 60 * 24));
}

// 替换图片和链接
function updateDailyImages() {
  const dynamicLinks = document.querySelectorAll('.dynamic-img-link');
  const totalImageCount = allImages.length;
  const dailyOffset = getDailyOffset();
  
  // 方案1:每日按顺序取连续9张图片(循环遍历所有图片)
  const startIndex = dailyOffset % (totalImageCount - dynamicLinks.length + 1);
  dynamicLinks.forEach((link, index) => {
    const imageInfo = allImages[startIndex + index];
    if (imageInfo) {
      link.href = imageInfo.linkHref;
      const img = link.querySelector('img');
      img.src = imageInfo.imgSrc;
      img.alt = imageInfo.alt;
    }
  });

  // 方案2:每日随机选9张不重复的图片(但每日组固定)
  // 若需要随机组,替换上面的方案1代码为以下内容:
  /*
  const randomIndices = new Set();
  // 基于日期偏移量生成固定的随机种子
  let seed = dailyOffset;
  while (randomIndices.size < dynamicLinks.length) {
    // 线性同余伪随机算法,保证种子固定时结果一致
    seed = (seed * 1103515245 + 12345) % 2**31;
    const randomIndex = seed % totalImageCount;
    randomIndices.add(randomIndex);
  }
  dynamicLinks.forEach((link, index) => {
    const imageInfo = allImages[Array.from(randomIndices)[index]];
    link.href = imageInfo.linkHref;
    const img = link.querySelector('img');
    img.src = imageInfo.imgSrc;
    img.alt = imageInfo.alt;
  });
  */
}

// 页面加载完成后执行替换
window.addEventListener('DOMContentLoaded', updateDailyImages);

关键说明

  • 日期偏移量:通过计算与起始日的天数差,确保当天无论刷新多少次,图片组都不会改变,第二天自动切换新的一组。
  • 两种替换方案:
    • 方案1按顺序循环展示图片,适合需要按批次展示的场景;
    • 方案2随机选组但每日固定,适合希望展示更随机内容的场景。
  • 维护便捷性:所有图片信息集中在imageData.js,新增或修改图片只需更新该文件即可。

内容的提问来源于stack exchange,提问作者numbskull

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 21:37:33