基於jQuery的合并表格中相同文本的相鄰儲存格的代碼

來源:互聯網
上載者:User

ONE

已經產生的資料表格大致內容如下:

地區 地區 商品代碼 商品名稱 數量 有效期間至 距效期(月) 產品批號 規格 單位 條碼
廣東 深圳 00028 紅花油              
廣東 深圳 00028 紅花油              
廣東 深圳 00028 紅花油              
廣東 廣州 00027 白花油              
廣東 廣州 00028 紅花油              
廣東 深圳 00028 紅花油              
廣東 深圳 00028 紅花油              
廣東 深圳 00028 紅花油              
廣東 深圳 00028 紅花油              

需要將前四列具有相同文本的相鄰儲存格進行自動合并,合并後如下:

地區 地區 商品代碼 商品名稱 數量 有效期間至 距效期(月) 產品批號 規格 單位 條碼
廣東 深圳 00028 紅花油              
             
             
廣州 00027 白花油              
00028 紅花油              
深圳              
             
             
             

1、在html的head中引入jQuery

2、添加合併儲存格的函數
複製代碼 代碼如下:
//函數說明:合并指定表格(表格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;
}
}
});
});
}

3、在html的head中調用合并函數合併儲存格
複製代碼 代碼如下:
<script type="text/javascript"><!--
$(document).ready(function(){
_w_table_rowspan("#spdata",4);
_w_table_rowspan("#spdata",3);
_w_table_rowspan("#spdata",2);
_w_table_rowspan("#spdata",1);
});
// -->
</script>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.