jquery合并表格中相同文本的相邻单元格


Posted in Javascript onJuly 17, 2015

一、效果

jquery合并表格中相同文本的相邻单元格

二、代码

<!DOCTYPE HTML>
<html>
<head>
  <title>Example</title>
  <meta charset="utf-8"/>
  <style></style>
  <script src="js/jquery-2.1.4.min.js"></script>
</head>
<body>
  <table id="process" cellpadding="2" cellspacing="0" border="1">
    <thead>
      <tr >
        <td>col0</td>
        <td>col1</td>
        <td>col2</td>
        <td>col3</td>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>SuZhou</td>
        <td>11111</td>
        <td>22222</td>
        <td>SuZhouCity</td>
      </tr>
      <tr>
        <td>SuZhou</td>
        <td>33333</td>
        <td>44444</td>
        <td>SuZhouCity</td>
      </tr>
      <tr>
        <td>SuZhou</td>
        <td>55555</td>
        <td>66666</td>
        <td>SuZhouCity</td>
      </tr>
      <tr>
        <td>ShangHai</td>
        <td>77777</td>
        <td>88888</td>
        <td>ShangHaiCity</td>
      </tr>
      <tr>
        <td>ShangHai</td>
        <td>uuuuu</td>
        <td>hhhhh</td>
        <td>ShangHaiCity</td>
      </tr>
      <tr>
        <td>ShangHai</td>
        <td>ggggg</td>
        <td>ccccc</td>
        <td>ShangHaiCity</td>
      </tr>
      <tr>
        <td>GuangZhou</td>
        <td>ttttt</td>
        <td>eeeee</td>
        <td>GuangZhouCity</td>
      </tr>
      <tr>
        <td>GuangZhou</td>
        <td>ppppp</td>
        <td>qqqqq</td>
        <td>GuangZhouCity</td>
      </tr>
    </tbody>
  </table>

  <script type="text/javascript">
//函数说明:合并指定表格(表格id为_w_table_id)指定列(列数为_w_table_colnum)的相同文本的相邻单元格
//参数说明:_w_table_id 为需要进行合并单元格的表格的id。如在HTMl中指定表格 id="data" ,此参数应为 #data 
//参数说明:_w_table_colnum 为需要合并单元格的所在列。为数字,从最左边第一列为1开始算起。
function _w_table_rowspan(_w_table_id,_w_table_colnum){
  _w_table_firsttd = "";
  _w_table_currenttd = "";
  _w_table_SpanNum = 0;
  _w_table_Obj = $(_w_table_id + " tr td:nth-child(" + _w_table_colnum + ")");
  _w_table_Obj.each(function(i){
    if(i==0){
      _w_table_firsttd = $(this);
      _w_table_SpanNum = 1;
    }else{
      _w_table_currenttd = $(this);
      if(_w_table_firsttd.text()==_w_table_currenttd.text()){
        _w_table_SpanNum++;
        _w_table_currenttd.hide(); //remove();
        _w_table_firsttd.attr("rowSpan",_w_table_SpanNum);
      }else{
        _w_table_firsttd = $(this);
        _w_table_SpanNum = 1;
      }
    }
  }); 
}
//函数说明:合并指定表格(表格id为_w_table_id)指定行(行数为_w_table_rownum)的相同文本的相邻单元格
//参数说明:_w_table_id 为需要进行合并单元格的表格id。如在HTMl中指定表格 id="data" ,此参数应为 #data 
//参数说明:_w_table_rownum 为需要合并单元格的所在行。其参数形式请参考jQuery中nth-child的参数。
//     如果为数字,则从最左边第一行为1开始算起。
//     "even" 表示偶数行
//     "odd" 表示奇数行
//     "3n+1" 表示的行数为1、4、7、10.......
//参数说明:_w_table_maxcolnum 为指定行中单元格对应的最大列数,列数大于这个数值的单元格将不进行比较合并。
//     此参数可以为空,为空则指定行的所有单元格要进行比较合并。
function _w_table_colspan(_w_table_id,_w_table_rownum,_w_table_maxcolnum){
  if(_w_table_maxcolnum == void 0){_w_table_maxcolnum=0;}
  _w_table_firsttd = "";
  _w_table_currenttd = "";
  _w_table_SpanNum = 0;
  $(_w_table_id + " tr:nth-child(" + _w_table_rownum + ")").each(function(i){
    _w_table_Obj = $(this).children();
    _w_table_Obj.each(function(i){
      if(i==0){
        _w_table_firsttd = $(this);
        _w_table_SpanNum = 1;
      }else if((_w_table_maxcolnum>0)&&(i>_w_table_maxcolnum)){
        return "";
      }else{
        _w_table_currenttd = $(this);
        if(_w_table_firsttd.text()==_w_table_currenttd.text()){
          _w_table_SpanNum++;
          _w_table_currenttd.hide(); //remove();
          _w_table_firsttd.attr("colSpan",_w_table_SpanNum);
        }else{
          _w_table_firsttd = $(this);
          _w_table_SpanNum = 1;
        }
      }
    });
  });
}
$(document).ready(function(){ 
 // _w_table_rowspan("#process",4);
 // _w_table_rowspan("#process",3);
 // _w_table_rowspan("#process",2);
 _w_table_rowspan("#process",1);
 });
  </script>
</body>
</html>

测试使用了一下,很赞!

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
jQuery获取字符串中出现最多的数
Feb 22 Javascript
Javascript 使用ajax与C#获取文件大小实例详解
Jan 13 Javascript
jQuery使用siblings获取某元素所有同辈(兄弟姐妹)元素用法示例
Jan 30 Javascript
jQuery EasyUI的TreeGrid查询功能实现方法
Aug 08 jQuery
详解Vue2 SSR 缓存 Api 数据
Nov 20 Javascript
react实现菜单权限控制的方法
Dec 11 Javascript
Angular4学习教程之DOM属性绑定详解
Jan 04 Javascript
Vue2.0子同级组件之间数据交互方法
Feb 28 Javascript
vue-cli3 从搭建到优化的详细步骤
Jan 20 Javascript
layui问题之渲染数据表格时,仅出现10条数据的解决方法
Sep 12 Javascript
ES6之Proxy的get方法详解
Oct 11 Javascript
浅谈javascript事件环微任务和宏任务队列原理
Sep 12 Javascript
用svg制作富有动态的tooltip
Jul 17 #Javascript
jquery实现根据浏览器窗口大小自动缩放图片的方法
Jul 17 #Javascript
JavaScript调用浏览器打印功能实例分析
Jul 17 #Javascript
JS判断页面是否出现滚动条的方法
Jul 17 #Javascript
javascript图片预加载实例分析
Jul 16 #Javascript
javascript的BOM汇总
Jul 16 #Javascript
.NET微信公众号开发之创建自定义菜单
Jul 16 #Javascript
You might like
PHP脚本的10个技巧(6)
2006/10/09 PHP
php5.2时间相差8小时
2007/01/15 PHP
php实现aes加密类分享
2014/02/16 PHP
PHP strtotime函数用法、实现原理和源码分析
2015/02/04 PHP
WordPress中给文章添加自定义字段及后台编辑功能区域
2015/12/19 PHP
laravel高级的Join语法详解以及使用Join多个条件
2019/10/16 PHP
JS中三目运算符和if else的区别分析与示例
2014/11/21 Javascript
12个非常实用的JavaScript小技巧【推荐】
2016/05/18 Javascript
谈谈JS中常遇到的浏览器兼容问题和解决方法
2016/12/17 Javascript
js css3实现图片拖拽效果
2017/03/04 Javascript
Node.js中的require.resolve方法使用简介
2017/04/23 Javascript
Bootstrap datepicker日期选择器插件使用详解
2017/07/26 Javascript
vue实现点击图片放大效果
2017/08/15 Javascript
VueJs组件prop验证简单介绍
2017/09/12 Javascript
javascript计算对象长度的方法
2017/10/25 Javascript
基于ES6作用域和解构赋值详解
2017/11/03 Javascript
JS简单添加元素新节点的方法示例
2018/02/10 Javascript
Node.js EventEmmitter事件监听器用法实例分析
2019/01/07 Javascript
了解前端理论:rscss和rsjs
2019/05/23 Javascript
a标签调用js的方法总结
2019/09/05 Javascript
在vue中使用vant TreeSelect分类选择组件操作
2020/11/02 Javascript
[04:03]DOTA2英雄梦之声_第02期_风暴之灵
2014/06/30 DOTA
详解Python如何获取列表(List)的中位数
2016/08/12 Python
Python 查找list中的某个元素的所有的下标方法
2018/06/27 Python
django API 中接口的互相调用实例
2020/04/01 Python
详解Ubuntu环境下部署Django+uwsgi+nginx总结
2020/04/02 Python
python实现双人五子棋(终端版)
2020/12/30 Python
华为python面试题
2016/05/03 面试题
卫校毕业生自我鉴定
2013/10/31 职场文书
结婚典礼证婚词
2014/01/11 职场文书
给交警的表扬信
2014/01/12 职场文书
雨雪天气温馨提示
2015/07/15 职场文书
Python Parser的用法
2021/05/12 Python
Python3 如何开启自带http服务
2021/05/18 Python
一文简单了解MySQL前缀索引
2022/04/03 MySQL
bose降噪耳机音能消除人声吗
2022/04/19 数码科技