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

如何通过JavaScript根据当前月日为匹配的HTML元素添加指定类名

如何通过JavaScript根据当前月日为匹配的HTML元素添加指定类名

嘿,我来帮你排查下问题~你的整体思路完全没问题,就是几个日期处理的小细节没踩对坑,导致脚本没生效,我给你拆解下问题点和修正后的代码:

问题出在这3个小细节:

  • 用错了日期方法:你写的getDay()是用来获取星期几的(返回0-6,0代表周日),要获取当月的具体日期,得用getDate()才行!
  • 月份的格式不匹配:getMonth()返回的是0-11(0对应1月),所以得先加1;而且你的data-date是两位数字的月份(比如"09"代表9月),如果直接用数字拼接,9月会变成"9",和"09"对不上,得补前导零。
  • 日期的补零处理:同理,如果是1-9号,getDate()返回的是单个数字,也要补成两位(比如5号变成"05"),才能和data-date的格式对齐。

修正后的完整代码:

JavaScript部分:

$(function() {
  var today = new Date();
  // 处理月份:加1后转成两位,不足补0
  var month = String(today.getMonth() + 1).padStart(2, '0');
  // 处理日期:转成两位,不足补0
  var day = String(today.getDate()).padStart(2, '0');
  // 拼成和data-date一致的MM-DD格式
  var formattedToday = month + "-" + day;

  $(".grid-item").each(function() {
    var specifiedDate = $(this).data('date');
    // 现在格式完全匹配,就能正确判断了
    if (formattedToday === specifiedDate) {
      $(this).addClass('today');
    }
  });
});

CSS部分(补全你截断的代码):

.grid-item {
  height: 130px;
  width: 130px;
  float: left;
  background: red;
  margin: 10px;
}

.today {
  background: yellow;
  border: 2px solid orange;
}

小调试技巧:

如果你不确定当前格式化后的日期对不对,可以在代码里加一行console.log(formattedToday),打开浏览器控制台就能看到拼接后的字符串,和你的data-date格式对比下,方便快速排查问题~

备注:内容来源于stack exchange,提问作者Andreas Böttcher

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 14:49:32