查阅代码整理(二)之遍历table的相关操作Js

      有关table列、行遍历;列、行的动态合并,一直在整理,之前的业务有遇到,修修改改,最终实现了一个稳定的通用版本。之前一直都是做的私有笔记,现公布希望大家指正。顺带分享下开发这部分代码时遇到的问题及处理方式。持续更新中......

1 遍历table获取每行某列td内部的<span/>

 

table中固定某一列显示的是多标签<span/> ,下面示例是遍历table获取每行第十个td内部的<span/>。注意span和td使用的是  .html()和  .text()而不是  .val()。仅供参考。

$(function(){
   var arr_cglx = new Array();
   arr_cglx = $("[id=fbmx_cglx_yc]").text().replace(/\s/g,"");
   for (var i=1;i<=arr_cglx.length;i++) {
if($('#TableId').find('tbody').find('tr:eq('+i+')').find('td:eq(10)').children('span').length>1){

//相关处理代码
}
				  }
	})

1.1 另两种写法

直接遍历tr(适合页面只有一个table);

通过td的name进行遍历。

 $('tr').each(function(i){ //这里的n可有可无
						//开始遍历每一行的每一列
						for(var j=0;j<cells(3);j++){
						$(this).children('td').eq(i).text(); //这里就拿到了第n行第i列的文字,你可以赋值给其他变量
						}
						})
根据name直接遍历获取
function getbtynum(){
// 	$("td[name='123']").text();
	//遍历行
	var num =0;
	  $("td[name='zt']").each(function(){
		  if($(this).text()==0){
				 num++;
			 };
      })
	 return num;
}

2 获取table的行数

 

这里是通过tbale ID定位table然后获取同class的多少,class一般写在tr上。

 function check(){
    	var trSize= $("#DataTable .fpxx_tr_Class").size();
    	 if(trSize==0){
   	      alert("数据至少有一条");
   	      return false;
   	    } 
        return true;
    }

页面 (当然也可以用id,name等)

table id="DataTable" >
<tr id ="tr" class="fpxx_tr_Class"></tr>
</table>

3 合并指定单元格并且根据隐藏id合并

 

/**     * 合并指定表格(表格id为dataTable_id)指定列(列数为dataTable_colnum)的相同文本的相邻单元格  

        * dataTable_id 为需要进行合并单元格的表格的id。如在HTMl中指定表格 id="data" ,此参数应为 #data  

        * dataTable_colnum 为需要合并单元格的所在列。为数字,从最左边第一列为1开始算起。

    */     

<script text="javascript">
/**     * 合并指定表格(表格id为dataTable_id)指定列(列数为dataTable_colnum)的相同文本的相邻单元格     * dataTable_id 为需要进行合并单元格的表格的id。如在HTMl中指定表格 id="data" ,此参数应为 #data     * dataTable_colnum 为需要合并单元格的所在列。为数字,从最左边第一列为1开始算起。     */     

 function dataTable_rowspan(dataTable_id, dataTable_colnum) {        
	dataTable_firsttd = "";      
	dataTable_firstNum = 0;
	dataTable_currenttd = "";        
	dataTable_SpanNum = 0;        
	dataTable_Obj = $(dataTable_id + " tr td:nth-child(" + dataTable_colnum + ")");   
      
	dataTable_Obj.each(function(i) {           
		if (i == 0) {                
			dataTable_firsttd = $(this); 
			dataTable_firstNum = 0;
			dataTable_SpanNum = 1;            
		} else {
			dataTable_currenttd = $(this);
			if ($.trim(dataTable_currenttd.text()) != "" && dataTable_firsttd.text() == dataTable_currenttd.text()&& $(dataTable_currenttd).find("input[type=hidden]").val()!=null && $(dataTable_firsttd).find("input[type=hidden]").val() == $(dataTable_currenttd).find("input[type=hidden]").val()) {  //这边注意不是val()属性,而是text()属性                    
				 
				dataTable_SpanNum++;   //alert("可折叠行:"+dataTable_SpanNum+"要折叠的行:"+dataTable_firstNum);  
				table_rownum = dataTable_SpanNum;
			    dataTable_currenttd.hide();                
			    dataTable_firsttd.attr("rowSpan", dataTable_SpanNum);
			    //alert("text:"+$(dataTable_id + " tr:nth-child(" + dataTable_firstNum+1 + ")").children("td:1").html());
			    //$(dataTable_id + " tr:nth-child(" + dataTable_firstNum+1 + ")").children("td:2").attr("rowSpan", dataTable_SpanNum); 
			    
			    //dataTable3_Obj[i].attr("rowSpan", dataTable_SpanNum); 
			} else{               
				dataTable_firsttd = $(this); 
				dataTable_firstNum = i;
				dataTable_SpanNum = 1;                
			}           
		}        
	});     
  }      
  $(function() {      
	  dataTable_rowspan("#DataTable", 1);   
  });

3.1 相同列合并(好几种写法,仅供参考)

合并指定列

/**
    * 合并指定表格(表格id为dataTable_id)指定列(列数为dataTable_colnum)的相同文本的相邻单元格
    * dataTable_id 为需要进行合并单元格的表格的id。如在HTMl中指定表格 id="data" ,此参数应为 #data
    * dataTable_colnum 为需要合并单元格的所在列。为数字,从最左边第一列为1开始算起。
    */
    function dataTable_rowspan(dataTable_id, dataTable_colnum) {
       dataTable_firsttd = "";
       dataTable_currenttd = "";
       dataTable_SpanNum = 0;
       dataTable_Obj = $(dataTable_id + " tr td:nth-child(" + dataTable_colnum + ")");
       dataTable_Obj.each(function(i) {
           if (i == 0) {
               dataTable_firsttd = $(this);
               dataTable_SpanNum = 1;
           } else {
               dataTable_currenttd = $(this);
               if (dataTable_firsttd.text() == dataTable_currenttd.text()) {  //这边注意不是val()属性,而是text()属性
                   dataTable_SpanNum++;
                   dataTable_currenttd.hide(); //remove();
                   dataTable_firsttd.attr("rowSpan", dataTable_SpanNum);
               } else {
                   dataTable_firsttd = $(this);
                   dataTable_SpanNum = 1;
               }
           }
       });
    }

    $(function() {
    	dataTable_rowspan("#DataTable", "1");
    	dataTable_rowspan("#DataTable", "2");
    });

3.2 相同行合并

合并指定行相同文本

 /**
    * 合并指定表格(表格id为dataTable_id)指定行(行数为dataTable_rownum)的相同文本的相邻单元格
    * dataTable_id 为需要进行合并单元格的表格id。如在HTMl中指定表格 id="data" ,此参数应为 #data
    * dataTable_rownum 为需要合并单元格的所在行。其参数形式请参考jQuery中nth-child的参数。
    *                 如果为数字,则从最左边第一行为1开始算起。
    *                 "even" 表示偶数行
    *                 "odd" 表示奇数行
    *                 "3n+1" 表示的行数为1、4、7、10.......
    * w_table_maxcolnum 为指定行中单元格对应的最大列数,列数大于这个数值的单元格将不进行比较合并。
    *                   此参数可以为空,为空则指定行的所有单元格要进行比较合并。
    */
    function dataTable_colspan(dataTable_id, dataTable_rownum, dataTable_maxcolnum) {
       if (dataTable_maxcolnum == void 0) {
           dataTable_maxcolnum = 0;
       }
       dataTable_firsttd = "";
       dataTable_currenttd = "";
       dataTable_SpanNum = 0;
       $(dataTable_id + " tr:nth-child(" + dataTable_rownum + ")").each(function(i) {
           dataTable_Obj = $(this).children();
           dataTable_Obj.each(function(i) {
               if (i == 0) {
                   dataTable_firsttd = $(this);
                   dataTable_SpanNum = 1;
               } else if ((dataTable_maxcolnum > 0) && (i > dataTable_maxcolnum)) {
                   return "";
               } else {
                   dataTable_currenttd = $(this);
                   if (dataTable_firsttd.text() == dataTable_currenttd.text()) {
                       dataTable_SpanNum++;
                       dataTable_currenttd.hide(); //remove();
                       dataTable_firsttd.attr("colSpan", dataTable_SpanNum);
                   } else {
                       dataTable_firsttd = $(this);
                       dataTable_SpanNum = 1;
                   }
               }
           });
       });
    }

使用:

//相同行合并
dataTable_rowspan("#dssTable", "2");
//相同列合并
for(i=1;i<=51;i++){
   dataTable_colspan("#dssTable", i, "2");
}

3.3 另一种写法

合并内容相同行

    //合并单元格
  function table_rowspan(table_id, table_colnum,table_hbfs) {
        table_firsttd = "";
        table_currenttd = "";
        table_SpanNum = 0;
        
        colnum_Obj = $(table_id + " tr td:nth-child(" + table_colnum + ")" );
        colnum_Obj.each( function(i) {
          if (i == 0) {
            table_firsttd = $( this);
            table_SpanNum = 1;
          } else {
            table_currenttd = $( this);
             if(table_hbfs.trim()=="html"){
                if (table_firsttd.html() == table_currenttd.html()) {
              table_SpanNum++;
              table_currenttd.hide(); //remove();
              table_firsttd.attr( "rowSpan", table_SpanNum);
            } else {
              table_firsttd = $( this);
              table_SpanNum = 1;
            }
             
             }else{
               if (table_firsttd.text() == table_currenttd.text()) {
              table_SpanNum++;
              table_currenttd.hide(); //remove();
              table_firsttd.attr( "rowSpan", table_SpanNum);
              } else {
              table_firsttd = $( this);
              table_SpanNum = 1;
              }
            }
          }
        });
      }
     
	$(function(){
	  $("a[title]").tipTip();
	     //合并行
       
        table_rowspan( "#DataTable", 1,"html");
       table_rowspan( "#DataTable", 2,"html");
       table_rowspan( "#DataTable", 3,"html");
       table_rowspan( "#DataTable", 4,"html");
       table_rowspan( "#DataTable", 5,"html");
       table_rowspan( "#DataTable", 6,"html");
       table_rowspan( "#DataTable", 7,"text");
	  
    });

4 获取子元素个数

 

获取子元素个数

//获取id=div1下的子元素的个数
$('#div1').children().length;
//获取id=div1下的span元素个数
$('#div1').children('span').length;

5 新增一行tr td

 

新增一行tr td

//新增操作
    function addAction(obj) {
        var tr;
        try {
            if (obj) {
                tr = $(obj).parent().parent().clone(true);
            } else {
                tr = $("#hideTable tr").clone(true);
            }
            trAdd(tr);
            // 编辑定点信息页面新增数据页面定位
            //$(tr).find("input[type='text']:first").focus();
            //fixHeight();
        } catch(e) {
            alert(e.message);
        }
    }

    //tr增加具体逻辑,替换所有的表单项id 然后append
    function trAdd(obj) {
    	alert( $("#DataTable").find("tr").length);
        var trLength = $("#DataTable").find("tr").length;
        $(obj).show();
        $("#DataTable").append(obj);
        setTrsxh();
    }


//回填导入excel定点数据
    function setDdxx(jsonData) {
        var ddxx = eval('(' + jsonData + ')');
        for (var i = 0; i < ddxx.length; i++) {
            addAction(); //增加一行
            //修改末尾行的内容
            $("#DataTable tr:last").find("input").each(function() {
                if (this.name != "" && this.value == "") {
                    this.value = eval('ddxx[i].' + this.name);
                }
            });
            $("#DataTable tr:last").find("option").each(function() {
                if (this.value == ddxx[i].ssdw) {
                    this.selected = true;
                }
            });
        }
        //fixHeight();
    }

6 获取去掉空格的值

 

获取去掉空格的值,等同于java中的replace,对指定值进行替换

$("[id=fbmx_cglx_yc]").text().replace(/\s/g,"");

7  span展示在td中没有换行

 

span展示在td中没有换行处理方式

 <sapn style=" width: 200px!important; 
 float: left !important;
  overflow: hidden !important;
 text-overflow: ellipsis !important; 
white-space: normal !important;
word-wrap : break-word ;" >

另外一种就是嵌套<pre><span>内容</span></pre>

<pre/>:保留换行符和空格

8 点击后置灰,置为不可用

 

点击后置灰,置为不可用

btn.gray.disabled {
  border: 1px solid #1D8BE0; 
  background-color: #1D8BE0 !important;
  color: #fff !important;
}


$("a.btn:not('#viewJs')").removeAttr("onclick").removeClass().addClass("btn gray disable").css("cursor", "default").attr('href', '####');

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值