HTML DOM TableData 对象

HTML表格由行和单元格组成。<td> 元素定义表格中的标准单元格,而 <th> 元素定义表格中的表头单元格。

<td> 元素

<td> 标签定义HTML表格中的标准数据单元格。

  • 包含在 <tr> 标签内
  • 默认显示为普通文本,左对齐
  • 可以包含文本、图像、列表、其他表格等
<th> 元素

<th> 标签定义HTML表格中的表头单元格。

  • 包含在 <tr> 标签内
  • 默认显示为粗体文本,居中对齐
  • 提供表格列的标题信息

完整属性列表

以下是 <td> 和 <th> 元素的所有属性,包括已废弃的属性:

属性 状态 描述 示例
abbr 标准 设置或返回单元格中内容的缩写版本(主要用于 <th>) <th abbr="Desc">详细描述</th>
align 已废弃 设置或返回单元格内部数据的水平排列方式 <td align="center">内容</td>
axis 标准 设置或返回相关单元格的一个逗号分隔的列表 <td axis="category1,category2">内容</td>
background 已废弃 设置或返回表格的背景图片 <td background="bg.jpg">内容</td>
bgColor 已废弃 设置或返回表格的背景颜色 <td bgColor="#ff0000">内容</td>
cellIndex 标准 返回单元格在某行的单元格集合中的位置(只读) let index = cell.cellIndex;
ch 标准 设置或返回单元格的对齐字符 <td ch=".">内容</td>
chOff 标准 设置或返回单元格的对齐字符的偏移量 <td chOff="2">内容</td>
colSpan 标准 单元格横跨的列数 <td colspan="2">跨两列的内容</td>
headers 标准 设置或返回 header-cell 的 id 值 <td headers="name-header age-header">数据</td>
height 已废弃 设置或返回数据单元的高度 <td height="50">内容</td>
noWrap 已废弃 nowrap 属性规定表格单元格中的内容不换行 <td noWrap>内容</td>
rowSpan 标准 设置或返回单元格可横跨的行数 <td rowspan="3">跨三行的内容</td>
scope 标准 定义表头单元格是行、列、行组还是列组的表头(仅 <th>) <th scope="col">姓名</th>
vAlign 标准 设置或返回表格单元格内数据的垂直排列方式 <td vAlign="top">内容</td>
width 已废弃 设置或返回单元格的宽度 <td width="100">内容</td>
关于已废弃属性

标记为"已废弃"的属性不再被推荐使用,它们可能在未来的浏览器版本中被移除。对于这些属性,建议使用CSS来实现相同的效果:

  • align → 使用 text-align CSS属性
  • background → 使用 background-image CSS属性
  • bgColor → 使用 background-color CSS属性
  • height → 使用 height CSS属性
  • noWrap → 使用 white-space: nowrap CSS属性
  • width → 使用 width CSS属性

专用方法

虽然 <td> 和 <th> 元素没有自己特有的方法(它们继承自HTMLElement),但在处理表格时有一些常用方法特别适用于这些元素:

表格行方法

方法 描述 示例
insertCell() 在表格行中插入新的单元格 let newCell = row.insertCell(0);
deleteCell() 从表格行中删除单元格 row.deleteCell(0);

单元格操作方法示例

// 获取表格行
let row = document.getElementById("myRow");

// 在指定位置插入新单元格
let newCell = row.insertCell(2);  // 在第三列位置插入
newCell.textContent = "新内容";

// 删除指定位置的单元格
row.deleteCell(0);  // 删除第一列

// 遍历行中的所有单元格
for (let i = 0; i < row.cells.length; i++) {
console.log("单元格 " + i + ": " + row.cells[i].textContent);
}

// 动态操作表格单元格的完整示例
function addRowToTable() {
let table = document.getElementById("myTable");
let newRow = table.insertRow();

// 添加单元格
let cell1 = newRow.insertCell(0);
let cell2 = newRow.insertCell(1);
let cell3 = newRow.insertCell(2);

cell1.textContent = "新行";
cell2.textContent = "数据";
cell3.innerHTML = '<button onclick="deleteRow(this)">删除</button>';
}

function deleteRow(button) {
let row = button.parentNode.parentNode;
row.parentNode.removeChild(row);
}

主要通用方法

以下是一些适用于 <td> 和 <th> 元素的主要通用方法:

属性操作方法

方法 描述 示例
setAttribute() 设置指定属性的值 cell.setAttribute('colspan', '2');
getAttribute() 返回指定属性的值 let colspan = cell.getAttribute('colspan');
removeAttribute() 移除指定属性 cell.removeAttribute('colspan');
hasAttribute() 检查元素是否有指定属性 if (cell.hasAttribute('colspan')) { ... }
getAttributeNames() 返回元素的所有属性名称数组 let attrs = cell.getAttributeNames();

内容操作方法

方法 描述 示例
insertAdjacentHTML() 在指定位置插入HTML文本 cell.insertAdjacentHTML('beforeend', '<span>新内容</span>');
insertAdjacentText() 在指定位置插入文本 cell.insertAdjacentText('beforeend', '新文本');
insertAdjacentElement() 在指定位置插入元素 cell.insertAdjacentElement('beforeend', newElement);

事件处理方法

方法 描述 示例
addEventListener() 为元素添加事件监听器 cell.addEventListener('click', handleClick);
removeEventListener() 移除元素的事件监听器 cell.removeEventListener('click', handleClick);
dispatchEvent() 向元素派发事件 cell.dispatchEvent(new Event('click'));

类操作方法

方法 描述 示例
classList.add() 添加一个或多个类名 cell.classList.add('highlight', 'active');
classList.remove() 移除一个或多个类名 cell.classList.remove('highlight');
classList.toggle() 切换类名的存在状态 cell.classList.toggle('active');
classList.contains() 检查是否包含指定类名 if (cell.classList.contains('highlight')) { ... }

通用方法示例

// 获取单元格元素
let cell = document.getElementById("myCell");

// 属性操作
cell.setAttribute('data-id', '123');
let id = cell.getAttribute('data-id');
cell.removeAttribute('data-id');
let hasAttr = cell.hasAttribute('colspan');

// 内容操作
cell.insertAdjacentHTML('beforeend', '<strong>重要内容</strong>');
cell.insertAdjacentText('beforeend', '普通文本');

// 事件处理
function handleClick(event) {
console.log('单元格被点击了');
}
cell.addEventListener('click', handleClick);

// 类操作
cell.classList.add('highlight', 'active');
cell.classList.remove('active');
cell.classList.toggle('selected');
let hasClass = cell.classList.contains('highlight');

// 样式操作
cell.style.backgroundColor = 'yellow';
cell.style.fontWeight = 'bold';

JavaScript DOM 属性

通过JavaScript访问 <td> 和 <th> 元素的属性:

// 获取单元格元素
let cell = document.getElementById("myCell");

// 访问专用属性
cell.abbr;              // 获取或设置abbr属性
cell.align;             // 获取或设置align属性 (已废弃)
cell.axis;              // 获取或设置axis属性
cell.background;        // 获取或设置background属性 (已废弃)
cell.bgColor;           // 获取或设置bgColor属性 (已废弃)
cell.cellIndex;         // 获取单元格在行中的索引 (只读)
cell.ch;                // 获取或设置ch属性
cell.chOff;             // 获取或设置chOff属性
cell.colSpan;           // 获取或设置colSpan属性
cell.headers;           // 获取或设置headers属性
cell.height;            // 获取或设置height属性 (已废弃)
cell.noWrap;            // 获取或设置noWrap属性 (已废弃)
cell.rowSpan;           // 获取或设置rowSpan属性
cell.scope;             // 获取或设置scope属性 (仅th)
cell.vAlign;            // 获取或设置vAlign属性
cell.width;             // 获取或设置width属性 (已废弃)

// 通用属性
cell.id;                // 获取或设置id
cell.className;         // 获取或设置class
cell.style;             // 获取样式对象
cell.title;             // 获取或设置title
cell.dataset;           // 获取data-*属性集合
cell.innerHTML;         // 获取或设置HTML内容
cell.textContent;       // 获取或设置文本内容
cell.innerText;         // 获取或设置可见文本

交互演示

通过以下交互演示来理解 <td> 和 <th> 元素的属性和方法如何工作:

属性控制器
当前选中单元格属性
请选择一个单元格查看其属性
方法测试
演示表格

点击表格中的单元格以选中它,然后使用上方的控制器修改其属性或使用方法。

ID 姓名 部门 薪水
1 张三 技术部 ¥8,000
2 李四 市场部 ¥7,500
3 王五 人力资源 ¥7,000

标准属性和事件

td/th 对象同样支持标准的 属性事件