javascript 实现table展开折叠

本文介绍如何使用JavaScript实现在IE8及以上浏览器中实现table下的内容展开和折叠功能,包括HTML代码和操作逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


本文是通过JavaScript实现table下的内容展开、折叠(仅在IE8以后可用)。

下载链接 http://download.youkuaiyun.com/detail/psp0001060/9210119


展开状态:(点击“-”,变成折叠状态)


折叠状态:(点击“+”,变成展开状态)


html代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<meta http-equiv="Content-Style-Type" content="text/css" />
	<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" />
<title>案件一覧</title>
<script type="text/javascript">
<!--
// 検索条件表示切替
function searchChange() {
	if (document.getElementById("searchChangeFlg").value == "1") {
		document.getElementById("tr2").style.display="block";
		document.getElementById("tr3").style.display="block";
		document.getElementById("tr4").style.display="block";
		document.getElementById("searchChange").innerHTML = "-";
		document.getElementById("searchChangeFlg").value = "0";
	} else {
		document.getElementById("tr2").style.display="none";
		document.getElementById("tr3").style.display="none";
		document.getElementById("tr4").style.display="none";
		document.getElementById("searchChange").innerHTML = "+";
		document.getElementById("searchChangeFlg").value = "1";
	}

	return false;
}
// -->
</script>
<style>
table  {
	border-collapse:collapse;
	width:50%;
}
th {
	border:1px solid black;
}
td {
	border:1px solid black;
}
</style>
</head>
<body>
<table>
<tr id="tr1">
<th colspan="1" width="1%">
<a id="searchChange" onclick="return searchChange()" href="">-</a>
</th>
<th colspan="4">
title
</th>
</tr>
<tr id="tr2">
<td rowspan="3"> </td>
<td>123456</td>
<td>789456</td>
<td>017852</td>
<td>698852</td>
</tr>
<tr id="tr3">
<td>apple</td>
<td>bags</td>
<td>balana</td>
<td>orange</td>
</tr>
<tr id="tr4">
<td>12345</td>
<td>67890</td>
<td>12345</td>
<td>67890</td>
</tr>
</table>

<input type="hidden" name="searchChangeFlg" id="searchChangeFlg" value="0" />

</body>
</html>


在 `el-table` 中实现展开折叠功能,通常涉及树状结构数据的展示与交互操作。通过设置 `row-key` 属性以及 `tree-props` 配置项,可以启用树形表格的支持,并结合 `toggleRowExpansion` 方法实现展开折叠控制。 ### 基本结构与配置 为了支持树状数据的渲染,需在 `<el-table>` 组件中指定 `row-key` 以确保每具有唯一标识,并通过 `tree-props` 定义子节点字段和是否有子节点的标志字段。例如: ```html <el-table v-if="refTable" :data="list" row-key="id" :tree-props="{children:'children', hasChildren:'hasChildren'}" :default-expand-all="isExpand"> <el-table-column label="机构名称" prop="attributes.org_name"></el-table-column> </el-table> ``` 该配置允许组件识别数据中的嵌套关系并自动渲染为树形结构[^1]。 ### 手动控制展开折叠 除了默认展开所有节点外,还可以通过调用 `toggleRowExpansion(row, expanded)` 方法手动控制某一是否展开。例如,在点击按钮时对所有统一展开折叠操作: ```html <el-button size="mini" @click.native="openTable('open')">一键展开</el-button> <el-button size="mini" @click.native="openTable('fold')">折叠</el-button> ``` ```javascript methods: { openTable(str) { if (str == 'open') { this.isOpen = true; } else { this.isOpen = false; } this.$nextTick(() => { this.handleArr(this.listData, this.isOpen); }); }, handleArr(arr, flag) { arr.forEach(i => { this.$refs.table.toggleRowExpansion(i, flag); if (i.children) { this.handleArr(i.children, flag); } }); } } ``` 上述代码实现了递归遍历所有层级数据,并对每一展开折叠操作,从而实现“一键展开”或“一键折叠”的功能[^2]。 ### 动态更新与性能优化 在动态更新数据后,如新增或删除节点,应使用 `$nextTick` 确保 DOM 更新后再进展开/折叠操作,避免因 DOM 未更新导致的方法调用失败。此外,对于大型数据集,建议按需加载子节点内容以提升性能。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值