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

基于日期逐步显示图片的JavaScript实现问题

解决降临日历逐步显示图片的问题

核心问题分析

你的现有代码逻辑是「仅当日期完全匹配时才显示对应图片」,其他日期都会隐藏,这就导致无法保留之前已显示的图片。要实现“到某天显示当天及之前所有图片”的效果,需要调整判断逻辑,从「匹配才显示」改为「日期达标就显示」。

修改方案

1. 调整CSS默认状态

先让所有图片默认隐藏,确保初始状态符合“12月1日前不显示任何图片”的要求:

.imageClass {
    display: none;
}

2. 优化JavaScript逻辑

不用逐个判断每个日期,而是计算当前日期与起始日期的差值,批量显示符合条件的图片,后续新增图片时无需重复编写判断逻辑:

// 设置降临日历的起始日期(对应第一个图片的显示日期)
const startDate = new Date("November 22, 2022");
const now = new Date();

// 计算当前日期与起始日期的天数差(取整数)
const timeDiff = now.getTime() - startDate.getTime();
const dayDiff = Math.floor(timeDiff / (1000 * 60 * 60 * 24));

// 显示符合条件的图片:如果天数差>=0,显示前dayDiff+1个图片(起始日当天为第0天,显示第一个)
if (dayDiff >= 0) {
    for (let i = 1; i <= dayDiff + 1; i++) {
        $(`.image${i}`).show();
    }
}
// 天数差<0时,所有图片保持隐藏,符合起始日前不显示的要求

3. HTML结构保持不变

你的现有HTML结构无需修改,后续新增图片只需按image1、image2的命名规则添加即可。

逻辑说明

  • 通过时间戳差值计算当前是起始日后的第几天,避免逐个日期判断的冗余
  • 起始日当天(dayDiff=0)显示image1;第1天(dayDiff=1)显示image1和image2,以此类推
  • 起始日前(dayDiff<0)所有图片保持隐藏,完全匹配需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 14:30:47