直接在<td>中写纯内容,无需额外标签;需对用户输入转义防XSS;用CSS控制对齐而非废弃HTML属性;空单元格必须显式写<td></td>;动态插入时注意类型转换与null/undefined处理。

直接往 <td> 里写内容就行,别套多余标签
绝大多数时候,<td> 就是纯容器,填数值不用额外包裹 <span> 或 <div>。比如数字 42、小数 3.14、日期 2024-06-15,直接放进去即可:
<tr> <td>100</td> <td>true</td> <td>apple</td> </tr>
浏览器会按文本渲染,不自动转义(除非含 < > 等特殊字符)。若内容来自用户输入或后端,记得做 HTML 转义,否则可能引发 XSS 或破坏表格结构。
数值对齐和格式控制靠 CSS,不是 <td> 属性
align、valign 这类 HTML 属性已废弃,用 text-align 和 vertical-align 替代:
<td style="text-align: right; vertical-align: middle;">99.9</td>
-
text-align: right对数字更友好,避免左对齐导致小数点错位 -
vertical-align: middle比默认的baseline更稳,尤其混排文字和图标时 - 批量控制建议写 CSS 类,比如
.num-cell { text-align: right; },别每个<td>都 inline 写
空单元格要显式写 <td></td>,不能省略
HTML 解析器不会自动补全缺失的 <td>。下面这行代码会导致表格错列:
立即学习“前端免费学习笔记(深入)”;
<tr><td>A</td><td>B</td></tr> <!-- 缺第三个单元格 -->
正确做法是明确留空:
<tr> <td>A</td> <td>B</td> <td></td> <!-- 显式空单元格 --> </tr>
如果想视觉上“隐藏”但保留结构,用 或 CSS visibility: hidden,但别删 <td> 标签本身。
动态插入数值时注意字符串拼接和类型转换
JS 拼接 <td> 时,数值类型会自动转字符串,但要注意:
- 浮点数精度问题:
0.1 + 0.2得到0.30000000000000004,显示前建议用toFixed(2)或Number(val).toLocaleString() - 布尔值转字符串是
"true"/"false",如需显示为 ✔/✘,得手动映射 - 避免直接拼接变量:
`<td>${data.price}</td>`—— 若data.price是null或undefined,会显示成文字"null"或"undefined",应提前处理
真正容易被忽略的是:表格结构一旦生成,再改 <td> 内容不会触发重排优化,大量更新时优先考虑 DocumentFragment 或虚拟 DOM 批量操作。



















