核心提示:使用JQuery实现HTML表格的单元格合并。/***desc:合并指定表格(表格id为table_id)指定列(列数为table_colnum)的相同文本的相邻单元格*@table_id表格id:为...
使用JQuery实现HTML表格的单元格合并。
- /**
- *desc:合并指定表格(表格id为table_id)指定列(列数为table_colnum)的相同文本的相邻单元格
- *@table_id表格id:为需要进行合并单元格的表格的id。如在HTMl中指定表格id="data",此参数应为#data
- *@table_colnum:为需要合并单元格的所在列.参考jQuery中nth-child的参数.若为数字,从最左边第一列为1开始算起;"even"表示偶数列;"odd"表示奇数列;"3n+1"表示的列数为1、4、7、......
- *@table_minrow?:可选的,表示要合并列的行数最小的列,省略表示从第0行开始(闭区间)
- *@table_maxrow?:可选的,表示要合并列的行数最大的列,省略表示最大行列数为表格最后一行(开区间)
- */
- functiontable_rowspan(table_id,table_colnum)
- {
- if(table_colnum=="even"){
- table_colnum="2n";
- }
- elseif(table_colnum=="odd"){
- table_colnum="2n+1";
- }
- else{
- table_colnum=""+table_colnum;
- }
- varcols=[];
- varall_row_num=$(table_id+"trtd:nth-child(1)").length;
- varall_col_num=$(table_id+"tr:nth-child(1)").children().length;
- if(table_colnum.indexOf("n")==-1){
- cols[0]=table_colnum;
- }
- else{
- varn=0;
- vara=table_colnum.substring(0,table_colnum.indexOf("n"));
- varb=table_colnum.substring(table_colnum.indexOf("n")+1);
- //alert("a="+a+"b="+(b==true));
- a=a?parseInt(a):1;
- b=b?parseInt(b):0;
- //alert(b);
- while(a*n+b<=all_col_num){
- cols[n]=a*n+b;
- n++;
- }
- }
- vartable_minrow=arguments[2]?arguments[2]:0;
- vartable_maxrow=arguments[3]?arguments[3]:all_row_num+1;
- vartable_firsttd="";
- vartable_currenttd="";
- vartable_SpanNum=0;
- for(varj=0;j
$(table_id+"trtd:nth-child("+cols[j]+")").slice(table_minrow,table_maxrow).each(function(i){ - vartable_col_obj=$(this);
- if(table_col_obj.html()!=""){
- if(i==0){
- table_firsttd=$(this);
- table_SpanNum=1;
- }
- else{
- table_currenttd=$(this);
- 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;
- }
- }
- }
- });
- }
- }
- /**
- *desc:合并指定表格(表格id为table_id)指定行(行数为table_rownum)的相同文本的相邻单元格
- *@table_id表格id:为需要进行合并单元格的表格的id。如在HTMl中指定表格id="data",此参数应为#data
- *@table_rownum:为需要合并单元格的所在行.参考jQuery中nth-child的参数.若为数字,从最左边第一列为1开始算起;"even"表示偶数行;"odd"表示奇数行;"3n+1"表示的行数为1、4、7、......
- *@table_mincolnum?:可选的,表示要合并行中的最小列,省略表示从第0列开始(闭区间)
- *@table_maxcolnum?:可选的,表示要合并行中的最大列,省略表示表格的最大列数(开区间)
- */
- functiontable_colspan(table_id,table_rownum){
- //if(table_maxcolnum==void0){table_maxcolnum=0;}
- vartable_mincolnum=arguments[2]?arguments[2]:0;
- vartable_maxcolnum;
- vartable_firsttd="";
- vartable_currenttd="";
- vartable_SpanNum=0;
- $(table_id+"tr:nth-child("+table_rownum+")").each(function(i){
- table_row_obj=$(this).children();
- table_maxcolnum=arguments[3]?arguments[3]:table_row_obj.length;
- table_row_obj.slice(table_mincolnum,table_maxcolnum).each(function(i){
- if(i==0){
- table_firsttd=$(this);
- table_SpanNum=1;
- }elseif((table_maxcolnum>0)&&(i>table_maxcolnum)){
- return"";
- }else{
- table_currenttd=$(this);
- if(table_firsttd.text()==table_currenttd.text()){
- table_SpanNum++;
- if(table_currenttd.is(":visible")){
- table_firsttd.width(parseInt(table_firsttd.width())+parseInt(table_currenttd.width()));
- }
- table_currenttd.hide();//remove();
- table_firsttd.attr("colSpan",table_SpanNum);
- }else{
- table_firsttd=$(this);
- table_SpanNum=1;
- }
- }
- });
});
调用<scripttype="text/javascript"> $(document).ready(function(){ table_rowspan("#shaitu",2); table_rowspan("#shaitu",3); table_rowspan("#shaitu",4); }); </script>