
本文详解为何在动态生成的日历表格中,月份标题(`
在 html 表格规范中,
观察原代码关键问题段:
if (month !== prevMonth) { var tr = document.createElement("tr"); var th = document.createElement("th"); th.colSpan = 7; th.textContent = "..."; tr.appendChild(th); // ✅ 正确:th 加入 tr tbody.appendChild(tr); // ✅ 正确:tr 加入 tbody }
但原问题代码中实际执行的是:
tbody.appendChild(th); // ❌ 错误!th 直接插入 tbody,无 tr 包裹
这违反了 HTML 标准(
✅ 正确修复方式:始终确保
if (month !== prevMonth) { // 创建新行用于显示月份标题 const monthRow = document.createElement("tr"); const monthHeader = document.createElement("th"); monthHeader.colSpan = 7; monthHeader.textContent = new Intl.DateTimeFormat("fr-FR", { month: "long", year: "numeric" }).format(currentdate); monthHeader.className = "month-header"; // 可选:添加样式类便于控制 monthRow.appendChild(monthHeader); tbody.appendChild(monthRow); // ✅ 完整结构:tr → th → tbody prevMonth = month; }
⚠️ 同时需注意其他潜在问题: