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 ...
随机推荐
- 2018 大湾区(深圳) .NET技术分享交流会 第一期
.NET Core 2.1 已于2018年5月30日正式发布,邀请粤港澳大湾区.NET技术专家和从业人员,一起分享与交流.NET技术的发展方向,提高粤港澳大湾区.NET技术交流氛围,挖掘.NET高级人 ...
- The algorithm learning of sort which include Bubblesort,Insertsort,Quicksort and Mergesort.
Notice : these algorithms achieved by Java. So,let's going to it. firstly, what is Bubblesort? why w ...
- Select下拉框使用ajax异步绑定数据
<!--前端样式--> <style> #searchs { width: 200px; position: absolute; border-top: none; margi ...
- MySQL 数据库在 Windows 下修复 only_full_group_by 的错误
本机上新安装了个MySQL数据库,在插入数据的时候一直提示这个错误: [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY ...
- C++ Opencv remap()重映射函数详解及使用示例
一.重映射及remap()函数介绍 重映射,就是把一幅图像中某位置的像素放置到另一图像指定位置的过程.即: 在重映射过程中,图像的大小也可以同时发生改变.此时像素与像素之间的关系就不是一一对应关系,因 ...
- [Swift]LeetCode801. 使序列递增的最小交换次数 | Minimum Swaps To Make Sequences Increasing
We have two integer sequences A and B of the same non-zero length. We are allowed to swap elements A ...
- 关于Python pandas模块输出每行中间省略号问题
关于Python数据分析中pandas模块在输出的时候,每行的中间会有省略号出现,和行与行中间的省略号....问题,其他的站点(百度)中的大部分都是瞎写,根本就是复制黏贴以前的版本,你要想知道其他问题 ...
- SpringBoot时间戳与MySql数据库记录相差14小时排错
项目中遇到存储的时间戳与真实时间相差14小时的现象,以下为解决步骤. 问题 CREATE TABLE `incident` ( `id` int(11) NOT NULL AUTO_INCREMENT ...
- 从搭建V2Ray服务器到编译V2Milk的完整过程
概述 因为公司出口ip一直在变,所以waf白名单不好加入,所以搭一个了代理服务器 .搭建了V2Ray服务器 .为了好管理,找了一个@Zzm317开源的V2Milk. V2Milk为V2Ray跨平台定制 ...
- 如何为自己的pip包打造可以执行的系统命令
1.我们在打包我们自己的Python Package的时候.我们不仅可以在代码中使用我们的package,而且可以添加一些可执行命令来执行自己的函数. 2 .我们应该怎么办呢? 1.首先新建目录以及文 ...