在JavaScript中实现树形表格(Tree Table)通常涉及到创建一个具有层次结构数据的表格,其中每一行可能包含子行,这些子行可以展开或折叠以显示更多详细信息。以下是实现树形表格的一些基础概念和相关信息:
<tr>
)和单元格(<td>
)。以下是一个简单的静态树形表格的实现示例:
HTML:
<table id="treeTable">
<tr>
<th>名称</th>
<th>值</th>
</tr>
</table>
JavaScript:
const data = [
{ name: '节点1', value: '值1', children: [
{ name: '子节点1-1', value: '值1-1' },
{ name: '子节点1-2', value: '值1-2' }
]},
{ name: '节点2', value: '值2' }
];
function createTreeTable(data, parentElement) {
data.forEach(item => {
const row = document.createElement('tr');
const nameCell = document.createElement('td');
const valueCell = document.createElement('td');
nameCell.textContent = item.name;
valueCell.textContent = item.value;
row.appendChild(nameCell);
row.appendChild(valueCell);
parentElement.appendChild(row);
if (item.children) {
const expandIcon = document.createElement('span');
expandIcon.textContent = '+';
expandIcon.style.marginRight = '5px';
nameCell.insertBefore(expandIcon, nameCell.firstChild);
expandIcon.addEventListener('click', (event) => {
event.stopPropagation();
const childTable = document.createElement('table');
childTable.style.display = 'none';
createTreeTable(item.children, childTable);
row.parentNode.insertBefore(childTable, row.nextSibling);
expandIcon.textContent = childTable.style.display === 'none' ? '-' : '+';
childTable.style.display = childTable.style.display === 'none' ? 'table-row-group' : 'none';
});
}
});
}
const table = document.getElementById('treeTable');
createTreeTable(data, table);
event.stopPropagation()
来防止事件冒泡。请注意,这只是一个基础示例,实际应用中可能需要更复杂的功能,如排序、过滤、异步加载数据等。
领取专属 10元无门槛券
手把手带您无忧上云