**表格 列 的删除**
这只一个删除列,还有插入行,删除行,插入列 ,感觉是不是太复杂了。有什么更好的思路
删除列 , 每个 td = { r:行c:列 maxr: 行+合并行,maxc:列+合并列数}
function deleteCol(col: number) {// col 要删除的列号
for (let i = 0, len = tableJson.value.body.length; i < len; i++) { // 循环每行
for (let x = tableJson.value.body[i].length - 1; x >= 0; x--) { // 循环每列
const in_index = getIndex(tableJson.value.body[i], col) // 获取插入的 位置
const td_rc = tableJson.value.body[i][x].rc
// console.log('第',i,'行',x,'列',td_rc );
if (td_rc.maxc >= col && td_rc.c < col) { // 穿过本列的单元格
td_rc.maxc = td_rc.maxc - 1
if (td_rc.maxr > td_rc.r) { // 假如有合并行,这里要跳过 合并行的循环
i = i + td_rc.maxr - td_rc.r
}
break
}
if (td_rc.c == col && td_rc.maxc > td_rc.c && td_rc.maxc > td_rc.c) { // 自已本身有向右或向下合并,则要把后面单元格显示出来
td_rc.c = td_rc.c + 1 // 即把这一列 向后移一位, 下面更新 col数据时 updateColData 时会 减 maxc 和 c
if (td_rc.maxr > td_rc.r) { // 有多行时,还要跳过 td_rc.maxr - td_rc.r 次循环
i = i + td_rc.maxr - td_rc.r
}
break
}
if (td_rc.c == col) { // 上面排除了多行多列合并,这里只考虑多行合并的
tableJson.value.body[i].splice(in_index, 1); // 删除此列, 并跳过 td_rc.maxr - td_rc.r 次循环
if (td_rc.maxr > td_rc.r) {
i = i + td_rc.maxr - td_rc.r
}
break
}
if (x == 0) { // 循环到最后,把本行唯一的 Td 删除
tableJson.value.body[i].splice(in_index, 1);
break
}
}
}
updateColData(col, 'sub') // 更新后面单元格的列号
rangeBoxStyle.value = 'range-box-none' // (更改类名来不显示)
startTd.value = undefined
endTd.value = undefined
afterOPER()
}
table 删除列函数的写法 请教
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- CSDN专家-showbo 2022-06-28 15:12关注
删除某个列应该简单吧,直接遍历tr,遍历td,指定列号在c~maxc之间,更新下colspan-1或者直接remove掉(只有一个)。参考这个最新的示例,和题主的目前代码结构和数据格式比较接近
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥20 java在应用程序里获取不到扬声器设备
- ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
- ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
- ¥15 Attention is all you need 的代码运行
- ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
- ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
- ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
- ¥80 部署运行web自动化项目
- ¥15 腾讯云如何建立同一个项目中物模型之间的联系
- ¥30 VMware 云桌面水印如何添加