原表格:
合并后:
实现思路:
在做合并表格前要先搞懂合并的原理,推荐阅读:
〖大前端 - 基础入门三大核心之 html 篇⑯〗- 认识表格 与 合并单元格
table数据为list一维数组,获取当前列存在重复的数量,且判断是否为第一条数据,若为第一条重复数据则加上rowspan,否则判断重复的数量是否为1才展示,具体代码如下:
HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script src="data.js"></script>
<script src="1.js"></script>
</head>
<style>
td{
text-align: center;
padding: 0 20px;
}
</style>
<body>
<table border="1">
<thead>
<tr>
<th>商品编码</th>
<th>商品名称</th>
<th>计量单位</th>
<th>采购申请号</th>
<th>行项目号</th>
<th>发货数量</th>
<th>订单数量</th>
</tr>
</thead>
<tbody id="purchaseOrderBeanInfo"></tbody>
</table>
</body>
</html>
JS:
$(function () {
const list = getList();
initData()
function initData() {
list.forEach((item, index) => {
const [num1, isFirst1] = getRepeatNum('sku', item.sku, index)
const [num2] = getRepeatNum('purchaseId', item.purchaseId, index, item.sku)
const productNum = getRepeatNum('productNum', item.productNum, index, item.sku)
let $tr = $("<tr></tr>");
if (isFirst1) {
$tr.append($(`<td rowspan="${
num1}" class="tdContentMiddle"></td>`).append(item.sku));
$tr.append($(`<td rowspan="${
num1}" class="tdContentMiddle"></td>`).append(item.productName));
$tr.append($(`<td rowspan="${
num1}" class="tdContentMiddle"></td>`).append(item.productUnit