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

如何用JavaScript实现指定日期后显示指定DIV?

解决指定日期后显示文本的JavaScript问题

嘿,作为JavaScript新手能尝试迁移代码已经很棒啦!咱们先看看你现有代码里的问题,再给出简单靠谱的解决方案~

你现有JS代码的几个问题:

  1. 日期比较的语法完全错误:if (today > 0, 16, 2018) 这种写法根本不符合JS语法,而且你手动拼接的mm/dd/yyyy是字符串,直接和数字比较完全不对,甚至字符串之间的日期比较也容易出bug(比如"12/01/2017"字符串会比"01/17/2018"大,但实际日期更早)。
  2. 月份处理遗漏+笔误:JS的getMonth()返回0-11(1月是0),你没加1就拼接成了日期字符串;另外代码里的20018明显是笔误,应该是2018。
  3. 没有处理时分秒:原PHP代码是精确到小时(date('YmdH')),你的JS只处理了年月日,逻辑上和原代码不一致。

优化后的解决方案(和原PHP逻辑完全对齐)

其实不用手动拼接日期字符串,直接用JS的Date对象比较时间戳是最准确、最简单的方式:

1. 保持你的CSS隐藏逻辑(没问题)

.DateDiv { display: none; }

2. 保持目标DIV结构(没问题)

<div class="DateDiv">
  <h3>Please note that the deadline for submitting proposals has passed.</h3>
</div>

3. 修正后的JavaScript代码(jQuery版本,适配你的现有写法)

$(document).ready(function() {
  // 定义截止日期:2018年1月17日10点(对应原PHP的2018011710)
  // 注意:JS的月份是0索引,所以1月要写0,小时是24小时制
  const deadline = new Date(2018, 0, 17, 10);
  const currentTime = new Date();
  
  // 直接比较两个Date对象,JS会自动转成时间戳(毫秒数)对比
  if (currentTime > deadline) {
    $(".DateDiv").show();
  }
});

如果你不想用jQuery(纯JS版本)

如果Drupal环境里不想依赖jQuery,也可以这么写:

document.addEventListener('DOMContentLoaded', function() {
  const deadline = new Date(2018, 0, 17, 10);
  const currentTime = new Date();
  const dateDiv = document.querySelector('.DateDiv');
  
  if (currentTime > deadline) {
    dateDiv.style.display = 'block';
  }
});

为什么这个方法更好?

  • 逻辑和原PHP完全一致:精确到小时对比,不会出现日期对但时间没到就显示的情况。
  • 避免手动拼接的错误:不用自己处理补0、月份索引这些细节,Date对象会帮你搞定。
  • 更可靠:时间戳对比是最准确的日期比较方式,不会出现字符串比较的逻辑bug。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:40:17