table 合并行和列

table合并行列,以及拆分

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <style type="text/css">
        .select
        {
            background-color: gray;
        }
        .left
        {
            text-align: left;
        }
        .center
        {
            text-align: center;
        }
        .right
        {
            text-align: right;
        }
        table
        {
            border-collapse: collapse;
            border: none;
        }
        td
        {
            border: solid #000 1px;
            border-color: Black;
            empty-cells: show;
        }
    </style>
    <script src="js/jquery-1.7.2.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {
            $("table tbody tr td").click(function () {
                $(this).toggleClass("select");
            });

            var getColCount = function () {
                var colspan = 0;
                //获取选择的实际列数,包括合并的列
                $(".select:first").parent().find(".select").each(function () {
                    if ($(this).attr("colspan") == undefined) {
                        colspan++;
                    } else {
                        colspan += parseInt($(this).attr("colspan"));
                    }
                });
                return colspan;
            }
            var getRowCount = function () {
                var rowspan = 0;
                //获取选择的实际行数,包括合并的行
                var yIndex = $(".select:first").parent().index();
                $("table tbody tr").has(".select").each(function () {
                    if ($(this).index() >= yIndex) {
                        var tr_first_checkd_td = $(this).find(".select:first");
                        if (tr_first_checkd_td.attr("rowspan") == undefined) {
                            rowspan++;
                            yIndex++;
                        } else {
                            rowspan += parseInt(tr_first_checkd_td.attr("rowspan"));
                            yIndex += parseInt(tr_first_checkd_td.attr("rowspan"));
                        }
                    }
                });
                return rowspan;
            }
            $("#merge").click(function () {
                if (canMerge()) {
                    var colspan = getColCount();
                    var rowspan = getRowCount();
                    if (colspan != 1) {
                        $(".select:first").attr({ colspan: colspan });
                    }
                    if (rowspan != 1) {
                        $(".select:first").attr({ rowspan: rowspan });
                    }
                    $(".select:gt(0)").remove();
                    $(".select").removeClass("select");
                } else {
                    alert("不能合并");
                }
            });

            var canMerge1 = function () {
                var rowCount = getRowCount();
                var colCount = getColCount();
                var totalCount = 0;
                $(".select").each(function () {
                    var rowspan = 1;
                    var colspan = 1;
                    if ($(this).attr("rowspan") != undefined) {
                        rowspan = parseInt($(this).attr("rowspan"));
                    }
                    if ($(this).attr("colspan") != undefined) {
                        colspan = parseInt($(this).attr("colspan"));
                    }
                    totalCount += (rowspan * colspan);
                });

                return totalCount == rowCount * colCount;
            };

            var canMerge = function () {
                //判断是否能合并,
                //一,选择的td个数等于第一个和最后一个选择的td构成的方块的个数,
                //二,所有选择的td的x和y轴的index都在第一个最后一个选中的td的index范围内
                var first_X_Index = $(".select:first").index();
                var first_Y_Index = $(".select:first").parent().index();

                var last_X_Index = $(".select:last").index();
                var last_Y_index = $(".select:last").parent().index();
                var count = (last_X_Index - first_X_Index + 1) * (last_Y_index - first_Y_Index + 1);
                var selectCount = $(".select").size();
                //选择的td个数等于第一个和最后一个选择的td构成的方块的个数
                var countEQ = count == selectCount;
                //所有选择的td的x和y轴的index都在第一个最后一个选中的td的index范围内
                var inRange = true;
                for (var i = 0; i < $(".select").size(); i++) {
                    var x_index = $(".select").eq(i).index();
                    var y_index = $(".select").eq(i).parent().index();
                    if (x_index < first_X_Index || x_index > last_X_Index) {
                        inRange = false;
                        break;
                    } else if (y_index < first_Y_Index || y_index > last_Y_index) {
                        inRange = false;
                        break;
                    }
                }
                //return inRange && countEQ;
                return true;
            };

            var getMin = function (colIndexs) {
                var temp = 0;
                for (var i = 0; i < colIndexs.length; i++) {
                    if (i == 0) {
                        temp = colIndexs[i];
                    } else {
                        if (colIndexs[i] < temp) {
                            temp = colIndexs[i];
                        }
                    }
                }
            }

            $("#split").click(function () {
                //先补齐colspan,再补齐rowspan,最后删除选中的colspan和rowspan
                $("table tr .select[colspan]").each(function () {
                    var colspan = parseInt($(this).attr("colspan"));
                    while (colspan > 1) {
                        var td = $("<td></td>");
                        td.click(function () {
                            $(this).toggleClass("select");
                        });
                        $(this).after(td);
                        colspan--;
                    }
                });

                $("table tr .select[rowspan]").each(function () {
                    var index = $(this).index() - 1;
                    var trIndex = $(this).parent().index() + 1;
                    var rowspan = parseInt($(this).attr("rowspan"));
                    if ($(this).attr("colspan") == undefined) {
                        while (rowspan > 1) {
                            var td = $("<td></td>");
                            td.click(function () {
                                $(this).toggleClass("select");
                            });
                            $("table tr").eq(trIndex).find("td").eq(index).after(td);
                            rowspan--;
                            trIndex++;
                        }
                    } else {
                        var colspan = parseInt($(this).attr("colspan"));
                        while (rowspan > 1) {
                            while (colspan > 0) {
                                var td = $("<td></td>");
                                td.click(function () {
                                    $(this).toggleClass("select");
                                });
                                $("table tr").eq(trIndex).find("td").eq(index).after(td);
                                colspan--;
                            }
                            rowspan--;
                            trIndex++;
                        }
                    }
                });

                $(".select[rowspan]").removeAttr("rowspan");
                $(".select[colspan]").removeAttr("colspan");
                $(".select").removeClass("select");
            });

            $(".align").click(function () {
                var textAlign = $(this).attr("gh-align");
                $(".select").css("text-align", textAlign);
                $(".select").removeClass("select");
            });

            $("#create").click(function () {
                $("table tbody tr").remove();
                var j = 1;
                while (j < 20) {
                    var i = 1;
                    var tr = $("<tr></tr>");
                    while (i < 20) {

                        var td = $("<td>" + j + "." + i + "</td>");
                        td.click(function (event) {
                            if (event.ctrlKey == 1) {
                                alert("ctrl");
                            }
                            $(this).toggleClass("select");
                        });
                        tr.append(td);
                        i++;
                    }
                    $("table").append(tr);
                    j++;
                };
            });
        });
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <div class="tool">
            <input type="button" value="新建" id="create" />
            <input type="button" value="合并" id="merge" />
            <input type="button" value="拆分" id="split" />
            <input type="button" value="左对齐" class="align" gh-align="left" />
            <input type="button" value="居中" class="align" gh-align="center" />
            <input type="button" value="右对齐" class="align" gh-align="right" />
        </div>
        <div class="body">
            <table border="1" style="width: 100%;">
                <tr>
                    <td>
                        1
                    </td>
                    <td>
                        2
                    </td>
                    <td>
                        3
                    </td>
                    <td>
                        4
                    </td>
                </tr>
                <tr>
                    <td>
                        5
                    </td>
                    <td>
                        6
                    </td>
                    <td>
                        7
                    </td>
                    <td>
                        8
                    </td>
                </tr>
                <tr>
                    <td>
                        9
                    </td>
                    <td>
                        10
                    </td>
                    <td>
                        11
                    </td>
                    <td>
                        12
                    </td>
                </tr>
                <tr>
                    <td>
                        13
                    </td>
                    <td>
                        14
                    </td>
                    <td>
                        15
                    </td>
                    <td>
                        16
                    </td>
                </tr>
            </table>
        </div>
    </div>
    </form>
</body>
</html>
时间: 2024-12-27 19:06:16

table 合并行和列的相关文章

html Table合并行和列

<!DOCTYPE html> <html> <head> <title>我的第四个页面</title> <meta charset=utf-8 > </head> <body> <table border="1" bordercolor="red" width="500" align="center" cellpadding

JavaScript遍历table的行和列

来源:http://blog.csdn.net/bobwu/article/details/7497412 1 <HTML> 2 <head> 3 <SCRIPT LANGUAGE="JavaScript"> 4 //遍历表格的每行每列 5 function viewCell() 6 { 7 var count=1; //在表格中显示的内容 8 for (i=0; i < document.all.tbl.rows.length; i++) {

解决 table固定行和列,导致滚动条显示

实现了列固定,头部行固定 左侧,右侧两个div,左侧滚动,右着滚动,但是左侧会出现滚动条 使用鼠标滚动事件监听左侧 //滚动事件 var scrollFunc = function (e) { e = e || window.event; if (e.wheelDelta == 120 || e.detail == -3) { $('#cl_freeze').scrollTop($('#cl_freeze').scrollTop()-50); $('#t_r_content').scrollTo

table合并单元格 colspan(跨列)和rowspan(跨行)

colspan和rowspan这两个属性用于创建特殊的表格. colspan是“column span(跨列)”的缩写.colspan属性用在td标签中,用来指定单元格横向跨越的列数: 在浏览器中将显示如下: 单元格1 单元格2 单元格3 单元格4 该例通过把colspan设为“3”, 令所在单元格横跨了三列.如果我们将colspan设为“2”,则该单元格将只跨越两列,于是有必要在第一行插入另外一个单元格,以确保两行占据相同的列数. 该例在浏览器中将显示如下: 单元格1 单元格2 单元格3 单元

table合并单元格

新建一张表格.要求表格有四行四列,当中第一行的四列合并,第二行.第三行和第四行的第一列合并 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> &

示例-创建表格-指定行列&amp;删除表格的行和列

<body> <script type="text/javascript"> /* *上面的方法和你麻烦.*既然操作的是表格,*那么最方便的方式就是使用表格节点对象的方法.* *表格是由行组成.表格节点对象中insertRow方法就完成了创建行并添加的动作.* *行是有单元格组成.通过tr节点对象的insertCell来完成.*/function crtTable(){ var oTabNode = document.createElement("ta

javascript动态创建表格:新增、删除行和列

转载:http://www.cnblogs.com/pato/archive/2009/09/02/1559068.html 利用js来动态创建表格有两种格式,appendChild()和insertRow.insertCell().两种方式其实差不多,但第一种有可能在IE上有问题,所以推荐大家使用第二种了,直接说吧. 1.inserRow()和insertCell()函数 insertRow()函数可以带参数,形式如下: insertRow(index):index从0开始 这个函数将新行添加

mysql 多行合并一列

mysql  多行合并一列 使用的函数为: GROUP_CONCAT(exp) 其中exp 的参数类似如下: (field order  by field   desc  separator ';'); 具体的例子如下: 创建表: CREATE TABLE `login` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`Id`) ) ENGINE=MyISAM AUTO

jquery获取td所在的行和列

今天在做项目时,遇到一个需要获取第几行第几列的问题.后来,网上找了找资料,整理了此文.(使用jquery的preAll()获取列) 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.