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

如何用JavaScript计算提交日期距今日天数并按规则修改文本颜色

完整实现方案

1 调整HTML结构

原有HTML存在标签未闭合、嵌套不规范、缺少可识别元素选择器的问题,修正后代码如下:

<p id="displayText">提交状态文本</p>
<form id="dateForm">
  <input type="date" id="date" name="date" required>
  <input type="submit" value="提交">
</form>

这里给展示文本加了id="displayText"方便JS选中修改样式,用form标签包裹输入项方便监听提交事件,加了required属性防止空提交。

2 编写JavaScript逻辑

直接在HTML底部插入script标签即可运行,完整逻辑代码如下:

// 选中需要操作的DOM元素
const form = document.getElementById('dateForm');
const displayText = document.getElementById('displayText');
const dateInput = document.getElementById('date');

// 监听表单提交事件
form.addEventListener('submit', function(e) {
  // 阻止表单默认提交刷新页面的行为
  e.preventDefault();
  
  // 处理日期数据,将时分秒统一设为0避免时间误差
  const submitDate = new Date(dateInput.value);
  submitDate.setHours(0, 0, 0, 0);
  const today = new Date();
  today.setHours(0, 0, 0, 0);
  
  // 计算两个日期的间隔天数
  const diffTime = today - submitDate;
  const diffDays = Math.floor(diffTime / (1000 * 60 * 60 * 24));
  
  // 根据间隔天数修改文本颜色
  if (diffDays > 10) {
    displayText.style.color = 'red';
  } else if (diffDays > 5) {
    displayText.style.color = 'yellow';
  } else {
    // 小于等于5天恢复默认黑色
    displayText.style.color = 'black';
  }
  
  // 可选:将间隔天数同步展示在文本中
  displayText.textContent = `提交已过${diffDays}天`;
});

逻辑说明

  • 日期计算时统一重置时分秒为0,避免因为当前时间早于提交日期的时间点,导致天数计算少1天的问题
  • 条件判断从大到小匹配,大于10天的优先级高于大于5天,避免逻辑判断错误
  • 用preventDefault()阻止form默认的页面跳转行为,保证功能在当前页面生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 21:27:03