日历签到表格通过JavaScript动态切换td的data-status和class实现“未签到→已签到→已补签”循环状态;采用data-date标识日期、STATES数组取模轮转、CSS视觉反馈及禁用防重提交,并支持回显、日期限制与补签次数管控。

日历签到表格的点击切换,核心是用 JavaScript 动态修改单元格( 每个日历单元格建议带明确的标识,方便 JS 精准操作: 示例单元格: 定义状态流转数组,用索引取模实现循环切换,更易维护: 关键代码片段: 仅改状态不够,用户需要即时视觉响应: 真实场景需考虑数据持久化和业务规则:)的类名或样式,配合数据状态管理,实现“未签到 → 已签到 → 已补签”等状态循环切换。
1. 结构设计:用 data 属性标记日期和状态
data-date="2024-05-12" 记录对应日期(ISO 格式,便于比对)data-status="absent" 初始值表示“未签到”,可选值:absent / signed / makeup
role="button" 和 tabindex="0" 支持键盘访问(无障碍友好)12
2. 状态切换逻辑:按顺序轮转,避免硬编码 if-else
const STATES = ['absent', 'signed', 'makeup']
data-status,查出其索引,+1 后对 3 取模,得到下一个状态.absent / .signed / .makeup)和 data-status 值
const curr = cell.dataset.status;
const idx = STATES.indexOf(curr);
const next = STATES[(idx + 1) % STATES.length];
cell.dataset.status = next;
cell.className = `day-cell ${next}`;
});3. 视觉反馈与防误点:加样式 + 禁用过渡期
.signed::after { content: "✓"; })cell.setAttribute('disabled', '') 或加 pointer-events: none),防止重复提交4. 扩展建议:支持回显与限制
data-date 并设置初始 data-status 和 classaria-disabled="true" + CSS 灰显 + 阻止事件)makeup 状态
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











