js统计Table单元格实际行列 不用rowSpan colSpan,而用offsetLeft

计算每个单元格所在的实际行、列,而不是cellIndex

 

IE8、FireFox下测试可用

 

具体代码如下:

 

/**
 浏览器判断
 */
var Sys = {};
var ua = navigator.userAgent.toLowerCase();
if (window.ActiveXObject)
	Sys.ie = ua.match(/msie ([\d.]+)/)[1];
else if (document.getBoxObjectFor)
	Sys.firefox = ua.match(/firefox\/([\d.]+)/)[1];
	
function containsArray(array, obj) {
	for (var i = 0; i < array.length; i++) {
		if (array[i] == obj) {
			return i;
			break;
		}
	}
	return -1;
}

Array.prototype.contains = function(obj) {
	return containsArray(this, obj);
}

function PrintTableToExcel(tableId) {

	var offsetLeftArray = new Array();
	var cell;// 单元格Dom
	var col;// 单元格实际所在列
	var cellStr;// 每个cell以row,col,rowSpan,colSpan,value形式
	var cellStrArray = [];
	var objTab = document.getElementById(tableId);

	// 遍历第一次取出offsetLeft集合
	for (var i = 0; i < objTab.rows.length; i++) {
		for (var j = 0; j < objTab.rows[i].cells.length; j++) {
			cell = objTab.rows[i].cells[j];
			if (offsetLeftArray.contains(cell.offsetLeft) == -1)
				offsetLeftArray.push(cell.offsetLeft);
		}
	}

	offsetLeftArray.sort(function(x, y) { return parseInt(x) - parseInt(y); });
	alert("offsetLeft集合:" + offsetLeftArray.join(','));

	// 遍历第二次生成cellStrArray
	for (var i = 0; i < objTab.rows.length; i++) {
		for (var j = 0; j < objTab.rows[i].cells.length; j++) {
			cell = objTab.rows[i].cells[j];
			col = offsetLeftArray.contains(cell.offsetLeft);
			cellStr = i + ',' + col + ',' + cell.rowSpan + ',' + cell.colSpan + "," + (Sys.firefox?cell.textContent:cell.innerText);
			cellStrArray.push(cellStr);
		}
	}

	// 显示
	var str = "行,列,rowSpan,colSpan,值\n";
	str += cellStrArray.join('\n');
	alert(str);

}

 



 

附件为例子.

 

jquery.table.rowspan.js 表格自动合并单元格插件 日常开发中,经常遇到表格里需要自动合并单元格,考虑到写服务器控件比较消耗性能,因些还是把这种工作交给客户端Javascript去做吧,基于习惯用jquery框架,所以封装了一个Jquery插件。 立即下载

相关推荐

封装CTP API为Java SDK

本文介绍了在Windows环境下使用Java调用CTP API的编译实现过程。首先需要准备CTP API SDK、JDK、SWIG和Visual Studio等工具,配置好开发环境。然后通过搭建目录结构、编写SWIG接口文件ctp.i,实现C++到Java的代码转换。文中详细说明了文件目录组织方式,并提供了处理中文乱码的代码示例。通过这一系列步骤,最终将CTP的C++接口转换为Java可调用的形式,为Java项目获取期货实时报价数据提供支持。

weixin_43952815的博客 1223

js小知识colspan和rowspan

colspan和rowspan这两个属性用于合并表格的列或者行。 colspan是"column span"(跨列)的缩写,所以colspan属性用在td标签中,用来跨列合并单元格的,其值是指单元格横向跨越的列数; rowspan属性是“跨行”的意思,也是应用在td标签中,用来跨行合并单元格,其值是指单元格纵向跨越的行数。 转载于:https://www.cnblogs.c...

diaozhu8194的博客 1333

STK与Matlab连接报错?手把手教你解决mexConnect函数执行问题(附完整避坑指南)

本文针对STK与Matlab连接时常见的“mexConnect函数执行”报错,提供了完整的诊断与解决方案。文章深入剖析了错误根源在于路径冲突或文件损坏,并手把手指导用户通过定位STK连接器文件、正确配置Matlab路径(包括使用addpath命令)以及执行初始化测试三步走策略,彻底解决问题。同时附上版本兼容性检查、安装避坑指南及构建稳健工作流的建议,帮助用户建立可靠的STK-Matlab联合仿真环境。

yolo5detector的博客 473

JavaScript JS合并单元格 rowspan

功能模块用到了合并单元格,网上看了下大都是转来转去的,而且多列合并时,没有判断前面的列是否存在合并, 造成后续列合并与前列有冲突,于是花时间写了一个 判断依据是取需要判断的第一行数据,循环剩下的数据行和第一行值匹配,条件满足则为合并单元格,遇到不等的开始新循环判断

只是回忆 4080

AFSim 2.9实战指南:从入门到精通的中文教程

本文是AFSim 2.9的实战指南,提供从零开始的中文教程。内容涵盖仿真环境搭建、实体行为控制、脚本编写,到传感器、武器系统集成与复杂想定构建,最后讲解数据记录与结果分析方法,帮助用户快速掌握这一强大的军事仿真框架。

weixin_29281941的博客 948

VirtualBox 7.0.8 + Android-x86 9.0 保姆级安装教程(附图形界面卡顿解决方案)

本文提供VirtualBox 7.0.8与Android-x86 9.0的详细安装教程及性能优化方案,帮助开发者解决图形界面卡顿问题。从环境准备到高级配置,涵盖硬件要求、安装步骤、显存优化及ADB调试等实用技巧,显著提升虚拟机流畅度,适用于应用测试和开发调试。

weixin_29224309的博客 529

js 计算表格实际列数

/**计算表格列数,以第一行为准**/ function calcTableColspan(tabId){ var max=0; var tab=$("#"+tabId); if(tab==null||tab.length==0){ return max; } var tr=$("#"+tabId+" tr")[0]; var _max2=tr.cells.length; for

zhao33699的专栏 1085

Ubuntu 24.04 高效部署Slurm集群:从零到生产环境实战

本文提供了一份在Ubuntu 24.04 LTS系统上从零开始部署生产级Slurm高性能计算集群的完整实战指南。内容涵盖网络配置、Munge安全认证、Slurm核心组件安装与配置,并深入讲解了cgroups资源隔离、NFS共享存储、配置无感知模式等生产环境优化技巧,最后通过实例演示如何提交与管理Slurm作业,帮助用户构建高效、稳定的计算平台。

weixin_29213655的博客 565

rowSpan(table)

rowSpan(key) { let arr = this.data .reduce((result, item) => { if (result.indexOf(item[key]) < 0) { result.push(item[key]) } return result }, []) .reduce((result, keys) => { .

lmyh1111的博客 288

uboot引导vxworks--t2080调试记录

开发环境: t2080rdb, uboot2015, vxworks7.01. 《VxWorks_7_fsl_t2t4_BSP_Supplement_Guide__SR0620.pdf》描述: 实际上默认创建的vip,profile选项为none时,vip内核配置中是包含了INCLUDE_END选项的。所以在创建vip的时候最好就添加上PROFILE_DEVELOPMENT。 2. 内核参数bootargs是一些网络参数设置=> pri bootargs bootargs=memac(1,0)b109304

珂珂可爱多 2645

3、结合物理学与深度学习的连续时间动力学模型

本文探讨了如何结合物理学原理与深度学习技术,构建连续时间动力学模型,以提升机器人系统对复杂动态环境的建模与控制能力。重点介绍了深度拉格朗日网络(DeLaN)和深度哈密顿神经网络(HNN)的理论基础及其在模拟与物理系统中的实验表现,并展示了其在逆向模型、前向模型以及能量控制任务上的优越性能。文章还分析了当前方法的局限性,并提出了未来研究方向,如接触处理、广义坐标学习及优化损失函数等。

linux的博客 910

js 自定义表格的合并单元格、插入行列、删除行列

js 自定义表格的合并单元格、插入行列、删除行列

bug搬运工 3682

安卓手机强制清理数据恢复出厂设置后无法设置密码怎么办?(分享亲身经历的有效解决方案)

📱安卓手机强制清数据恢复出厂设置后,竟无法设置锁屏密码!本文将解析问题根源,分享亲测有效的解决方案,帮你快速摆脱困扰🎉

XiaoqiangClub的博客 244

uniapp 处理表格数据,合并行数据处理

uniapp 处理表格数据,合并行数据处理

Vue1024的博客 6093

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

uniapp uni-table表格组件 合并单元格

就可以,虽然文档上并没有写这些参数,但是我实际使用后以后,发现这些参数是可以直接用的(我猜测其他的一些参数都是可以用的,但是还没有验证)。这里就放了部分表头的代码。

qq_17627195的博客 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Excel技巧,批量导入导出图片VBA

Sub save_pic() For Each p In ActiveSheet.Shapes ph = p.Height pw = p.Width p.ScaleHeight 1, True p.ScaleWidth 1, True pn = p.TopLeftCell.Off...

ESR 研发中心 2713

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

uniapp 自制表格的基本知识

推荐阅读: uni-table 组件资料 java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)

码农研究僧的博客 8866

uniapp表格合并

最左边本来是三个td,但是要截图里面的效果,只需要rowspan="3"

apple_70049717的博客 728

造个轮子,动手实现一个复杂场景的表格组件(UniApp)

造个轮子,动手实现一个复杂场景的表格组件(UniApp)

weixin_39182097的博客 5399

Ubuntu 18.04 ORB-SLAM2环境配置及TUM数据集测试

主要进行了ORB-SLAM2环境的配置和TUM数据集的测试 1. 相关软件及环境搭配 2. TUM数据集测试 1. 相关软件及环境搭配 主要参考的几位博主的文章,链接如下: 1.ORB-SLAM2环境搭配及软件和测试数据集参考博客,以及在环境配置中遇到问题的总结 Ubuntu18.04 ORB_SLAM2的安装、配置、运行SLAM单目实例 2.安装Open-CV3.4.1主要参考博客: 第一个链接主要是Open-CV3.4.1安装过程的博客;第二个链接主要是在安装Open-CV3.4.1过程中遇到问题解决问

GNSS/INS组合导航 1643

html的table中rowspan colspan实现跨行或者跨列

rowspan是单元格跨行,colspan是单元格跨列。 原则: 1. 第一个tr单元格的colspan总数(如果没有colspan属性就按照colspan=1计数)表示整个table的列的个数(比如第一个tr的colspan总数为3,那么第二个tr里面可以有三个无colspan属性的td,或者, 有1个td包含colspan=2,一个无colspan的td)。 2. rowspan最大只能

wangxugangzy05的专栏 2670

自动化办公 | 快速从Excel中提取图片并匹配命名

大家好,我是小五????关于自动化办公,之前我思考过好久。到底什么是自动化办公,哪些属于能真正提高我们工作效率的知识,哪些所谓的python自动化办公项目又是伪需求?其实挺难断定的,可能大...

zhuxiao5的博客 4256

VBA之批量导出图片

`Sub Rename() Application.ScreenUpdating = False On Error Resume Next MkDir ThisWorkbook.Path & “\图片” For Each pic In ActiveSheet.Shapes If pic.Type = msoPicture Then RN = pic.TopLeftCell.Offset(0, -1).Value '重命名图片 pic.Copy With ActiveShee

weixin_48660856的博客 1625
上一篇: table导出为Excel jxl
下一篇: Eclipse常用快捷键
fireinjava
博客等级 码龄20年 5粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值