JS table内容转成二维数组,支持colspan和rowspan
思路:
1.先初始化colspan的数据到数组
2.根据rowspan和colspan计算th和td的矩阵二次填充数组
说明:
需要引用到第三方库jQuery,table中的th和td行和列跨度必须正确
<!-- 演示数据部分 -->
<table id="expTable" class="table table_hover table_border table_center">
<tbody>
<tr class="head">
<th>客户</th>
<th class="bb_header">期初余额</th>
<th colspan="2">订单金额</th>
<th>收款金额</th>
<th>收款账户</th>
<th>客户余额</th>
<th>备注</th>
</tr>
<tr>
<td rowspan="2">新月</td>
<td>21</td>
<td rowspan="3">22</td>
<td>23</td>
<td>24</td>
<td>25</td>
<td>26</td>
<td></td>
</tr>
<tr>
<td>31</td>
<td>32</td>
<td>33</td>
<td>34</td>
<td>35</td>
<td></td>
</tr>
<tr>
<td>合计</td>
<td>41</td>
<td>42</td>
<td>43</td>
<td>-</td>
<td>45</td>
<td></td>
</tr> </tbody>
</table>
//获取table内容并转成二维数组(支持colspan和rowspan)
function getTabArray(tabId) {
var data = [];
if ($(tabId + ' tr').length == 0) {
return data;
}
//填充数组
$(tabId + ' tr').each(function () {
var arr = [];
$(this).children('th,td').each(function () {
arr.push($(this).text().trim());
if ($(this).attr('colspan')) {
for (var i = 0, len = parseInt($(this).attr('colspan')) - 1; i < len; i++) {
arr.push('');
}
}
});
data.push(arr);
});
//二次填充
var yIndex = 0;
$(tabId + ' tr').each(function () {
var xIndex = 0;
$(this).children('th,td').each(function () {
var t_yIndex = 0;
if ($(this).attr('rowspan')) {
t_yIndex = parseInt($(this).attr('rowspan'));
} for (var i = 1, len = t_yIndex; i < len; i++) {
var arr = data[yIndex + i];
arr.splice(xIndex, 0, '');
} if ($(this).attr('colspan')) {
xIndex += parseInt($(this).attr('colspan'));
} else {
xIndex++;
}
});
yIndex++;
});
return data;
}
//测试调用显示到console
getCvsData()
function getCvsData() {
var data = getTabArray('#expTable');
var cvsLines = '';
for (var i = 0, len = data.length; i < len; i++) {
cvsLines += data[i].join(',') + '\n';
} //debug
for (var i = 0, len = data.length; i < len; i++) {
console.info(data[i].join(','));
}
return cvsLines;
}
声明:本文为原创文章,如需转载,请注明来源并保留原文链接
JS table内容转成二维数组,支持colspan和rowspan的更多相关文章
- qrcode.js插件将你的内容转换成二维码格式
---qrcode.js插件将你的内容转换成二维码格式--- 我之前一直想知道二维码是怎么生成,所以就了解了一下, 最后还是不知道它的原理, 但是,我知道怎么生成. 现在就让我带你制作一个你喜爱的二维 ...
- JS框架_(Qrcode.js)将你的内容转换成二维码格式
百度云盘 传送门 密码:304e 输入网址点击按钮生成二维码,默认为我的博客首页 二维码格式演示 <!DOCTYPE html> <html lang="en"& ...
- numpy中三维数组转变成二维数组
numpy中reshape()函数对三维数组进行转换成二维数组,见下面例子: >>>a=np.reshape(np.arange(18),(3,3,2)) >>> ...
- java list map转换成二维数组
/** * *@Title: ListToArray *@Description: list列表转换成二维数组 *@Author: Administrator *@Since: 2018年1月7日下午 ...
- php将一个二维数组按照某个字段值合并成一维数组,如果有重复则将重复的合并成二维数组
版权声明:本文为博主原创文章,未经博主允许不得转载. 最近工作中碰到一个问题,用PHP将一个二维数组按照二维数组中的各个项中的某个特定字段值合并成一维数组,如果有重复则将重复的合并成二维数组,生成的二 ...
- js将一个具有相同键值对的一维数组转换成二维数组
这两天,一个前端朋友在面试的笔试过程中遇到了一道类似于"用js实现将一个具有相同code值的一维数组转换成相同code值在一起的二维数组"的题目.他面试过后,把这个问题抛给了我,问 ...
- 用js刷剑指offer(二维数组中的查找)
题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...
- PHP多个一维数组合并成二维数组的简易方法
当我们需要进行数组遍历数据的时候,需要将多个一维数组进行二维的转换,方法很简单.如下: <?php $a= array('张三','李四','王五'); $b= array ('23','24' ...
- java将一维数组拆分成二维数组
package staticFactory; public class Array { public static void main(String[] args) { String[] a=new ...
随机推荐
- [Swift]LeetCode351. 安卓解锁模式 $ Android Unlock Patterns
Given an Android 3x3 key lock screen and two integers m and n, where 1 ≤ m ≤ n ≤ 9, count the total ...
- [Swift]LeetCode665. 非递减数列 | Non-decreasing Array
Given an array with n integers, your task is to check if it could become non-decreasing by modifying ...
- Visual Studio 2010软件安装教程
链接:https://pan.baidu.com/s/10FeLlKpzFcb9yUjm3ZECsg 提取码:pup1 复制这段内容后打开百度网盘手机App,操作更方便哦 1.右击软件压缩包,选择解压 ...
- Python的数据库操作(Sqlalchemy)
ORM 全称 Object Relational Mapping, 翻译过来叫对象关系映射.简单的说,ORM 将数据库中的表与面向对象语言中的类建立了一种对应关系.这样,我们要操作数据库,数据库中的表 ...
- 陕西省网络空间安全技术大赛部分题目writeup
签到-欢迎来到CSTC2017 10 欢迎来到CSTC2017 ZmxhZ3tXZWlTdW9GeXVfQmllTGFuZ30= Base64解密:flag{WeiSuoFyu_BieLang} 种棵 ...
- python高级-动态特性(20)
一.动态语⾔的定义 动态语言是在运行时确定数据类型的语言.变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型.现在比较热门的动态语言有:Python.PHP.JavaScript.Obj ...
- 【java爬虫】---爬虫+基于接口的网络爬虫
爬虫+基于接口的网络爬虫 上一篇讲了[java爬虫]---爬虫+jsoup轻松爬博客,该方式有个很大的局限性,就是你通过jsoup爬虫只适合爬静态网页,所以只能爬当前页面的所有新闻.如果需要爬一个网站 ...
- JVM(2)--一文读懂垃圾回收
与其他语言相比,例如c/c++,我们都知道,java虚拟机对于程序中产生的垃圾,虚拟机是会自动帮我们进行清除管理的,而像c/c++这些语言平台则需要程序员自己手动对内存进行释放.虽然这种自动帮我们回收 ...
- Python进阶:切片的误区与高级用法
2018-12-31 更新声明:切片系列文章本是分三篇写成,现已合并成一篇.合并后,修正了一些严重的错误(如自定义序列切片的部分),还对行文结构与章节衔接做了大量改动.原系列的单篇就不删除了,毕竟也是 ...
- Oracle学习笔记二
多表查询: 笛卡尔积: 实际上是两张表的乘积,但是在实际开发中没有太大意义 格式: select * from 表1,表2 select * from emp; select * from dept; ...