table 合并单元格


//合并单元格函数(tableId 表格id,cellIndex  合并td的索引 从0开始),,如果多列的话,,列数最大的放在上面
function mergeCells(tableId,cellIndex){
    var $tr = $("#"+tableId+" tbody tr");
    var companyList = new Array();

    //当前列的所有内容
    $.each($tr, function (index, ele) {
        var text = $(ele).find("td").eq(cellIndex).text();
        companyList.push(text);
    });

    //按照内容分组统计
    var hist = {};
    companyList.map(function (a) {
        if (a in hist)
            hist[a]++;
        else
            hist[a] = 1;
    });

    //记录操作表格信息(起始TR索引,结束TR索引,合并行数,内容名称)
    var list = new Array();
    var temp = "";
    $.each(companyList, function (index, ele) {
        var obj = new Object();
        if (temp != ele) {
            temp = ele;
            obj.FirstIndex = index;
            obj.RowSpan = hist[ele];
            obj.EndIndex = index + obj.RowSpan - 1;
            obj.Name = ele;
            list.push(obj);
        }
    });

    //合并表格
    $.each(list, function (index, ele) {
        //设置rowspan
        $("#"+tableId+" tbody tr:eq(" + ele.FirstIndex + ") td:eq("+cellIndex+")").attr("rowspan", ele.RowSpan);
        //清除多余行数
        var $removeTr = $("#"+tableId+" tbody tr:gt(" + ele.FirstIndex + "):lt(" + ele.EndIndex + ")");
        $.each($removeTr, function (removeIndex, removeEle) {
            if ($(removeEle).children("td:eq(" + cellIndex + ")").text() == ele.Name) {
                $(removeEle).children("td:eq(" + cellIndex + ")").remove();
            }
        });
    });
}

猜你喜欢

转载自blog.csdn.net/z793397795/article/details/86654017