js锁定表头和列,实现类似execl锁定效果

来源:互联网 发布:好玩的网站源码 编辑:程序博客网 时间:2024/05/21 18:33

js锁定表头和列,实现类似execl锁定效果,项目实现后效果如下:

实际项目应用效果

js代码

<script type="text/javascript">function FixTable(TableID, FixColumnNumber, width, height) {    if ($("#" + TableID + "_tableLayout").length != 0) {        $("#" + TableID + "_tableLayout").before($("#" + TableID));        $("#" + TableID + "_tableLayout").empty();    }    else {        $("#" + TableID).after("<div id='" + TableID + "_tableLayout' style='overflow:hidden;height:" + height + "px; width:" + width + "px;'></div>");    }    $('<div id="' + TableID + '_tableFix"></div>'    + '<div id="' + TableID + '_tableHead"></div>'    + '<div id="' + TableID + '_tableColumn"></div>'    + '<div id="' + TableID + '_tableData"></div>').appendTo("#" + TableID + "_tableLayout");    var oldtable = $("#" + TableID);    var tableFixClone = oldtable.clone(true);    tableFixClone.attr("id", TableID + "_tableFixClone");    $("#" + TableID + "_tableFix").append(tableFixClone);    var tableHeadClone = oldtable.clone(true);    tableHeadClone.attr("id", TableID + "_tableHeadClone");    $("#" + TableID + "_tableHead").append(tableHeadClone);    var tableColumnClone = oldtable.clone(true);    tableColumnClone.attr("id", TableID + "_tableColumnClone");    $("#" + TableID + "_tableColumn").append(tableColumnClone);    $("#" + TableID + "_tableData").append(oldtable);    $("#" + TableID + "_tableLayout table").each(function () {        $(this).css("margin", "0");    });    var HeadHeight = $("#" + TableID + "_tableHead thead").height();    HeadHeight += 2;    $("#" + TableID + "_tableHead").css("height", HeadHeight);    $("#" + TableID + "_tableFix").css("height", HeadHeight);    var ColumnsWidth = 0;    var ColumnsNumber = 0;    $("#" + TableID + "_tableColumn tr:last td:lt(" + FixColumnNumber + ")").each(function () {        ColumnsWidth += $(this).outerWidth(true);        ColumnsNumber++;    });    ColumnsWidth += 2;    if ($.browser.msie) {        switch ($.browser.version) {            case "7.0":                if (ColumnsNumber >= 3) ColumnsWidth--;                break;            case "8.0":                if (ColumnsNumber >= 2) ColumnsWidth--;                break;        }    }    $("#" + TableID + "_tableColumn").css("width", ColumnsWidth);    $("#" + TableID + "_tableFix").css("width", ColumnsWidth);    $("#" + TableID + "_tableData").scroll(function () {        $("#" + TableID + "_tableHead").scrollLeft($("#" + TableID + "_tableData").scrollLeft());        $("#" + TableID + "_tableColumn").scrollTop($("#" + TableID + "_tableData").scrollTop());    });    $("#" + TableID + "_tableFix").css({ "overflow": "hidden", "position": "relative", "z-index": "50", "background-color": "#fff" });    $("#" + TableID + "_tableHead").css({ "overflow": "hidden", "width": width, "position": "relative", "z-index": "45", "background-color": "#fff" });    $("#" + TableID + "_tableColumn").css({ "overflow": "hidden", "height": height, "position": "relative", "z-index": "40", "background-color": "#fff" });    $("#" + TableID + "_tableData").css({ "overflow": "scroll", "width": width, "height": height, "position": "relative", "z-index": "35" });    if ($("#" + TableID + "_tableHead").width() > $("#" + TableID + "_tableFix table").width()) {        $("#" + TableID + "_tableHead").css("width", $("#" + TableID + "_tableFix table").width());        $("#" + TableID + "_tableData").css("width", $("#" + TableID + "_tableFix table").width() + 17);    }    if ($("#" + TableID + "_tableColumn").height() > $("#" + TableID + "_tableColumn table").height()) {        $("#" + TableID + "_tableColumn").css("height", $("#" + TableID + "_tableColumn table").height());        $("#" + TableID + "_tableData").css("height", $("#" + TableID + "_tableColumn table").height() + 17);    }    $("#" + TableID + "_tableFix").offset($("#" + TableID + "_tableLayout").offset());    $("#" + TableID + "_tableHead").offset($("#" + TableID + "_tableLayout").offset());    $("#" + TableID + "_tableColumn").offset($("#" + TableID + "_tableLayout").offset());    $("#" + TableID + "_tableData").offset($("#" + TableID + "_tableLayout").offset());}$(document).ready(function () {    FixTable("MyTable", 2,600, 400);});/** 1.参数分别为(要锁定的Table的ID,要锁定列的个数,显示的宽度,显示的高度)* 2.显示的宽度,显示的高度在移动端用可使用$(window).width(),$(window).height()*/</script>

对应的html代码

<table id="MyTable"><thead>    <tr>        <th style="text-align: center; width: 80px" rowspan="3">            姓名        </th>        <th style="text-align: center; width: 80px" rowspan="3">            班级        </th>        <th style="text-align: center" colspan="10">            成绩        </th>    </tr>    <tr>        <th style="text-align: center" colspan="3">            主科        </th>        <th style="text-align: center" colspan="3">            文科        </th>        <th style="text-align: center" colspan="3">            理科        </th>        <th style="text-align: center; width: 80px" rowspan="2">            总分        </th>        </tr>    <tr>        <th style="text-align: center; width: 80px">            语文        </th>        <th style="text-align: center; width: 80px">            数学        </th>        <th style="text-align: center; width: 80px">            英语        </th>        <th style="text-align: center; width: 80px">            政治        </th>        <th style="text-align: center; width: 80px">            历史        </th>        <th style="text-align: center; width: 80px">            地理        </th>        <th style="text-align: center; width: 80px">            物理        </th>        <th style="text-align: center; width: 80px">            化学        </th>        <th style="text-align: center; width: 80px">            生物        </th>    </tr></thead>    <tbody>    <!-- 数据行 -->        <tr>            <td>                姓名32            </td>            <td>                班级1            </td>            <td>                29            </td>            <td>                25            </td>            <td>                146            </td>            <td>                28            </td>            <td>                79            </td>            <td>                73            </td>            <td>                47            </td>            <td>                8            </td>            <td>                91            </td>            <td>                526            </td>        </tr>                <tr>            <td>                姓名32            </td>            <td>                班级1            </td>            <td>                29            </td>            <td>                25            </td>            <td>                146            </td>            <td>                28            </td>            <td>                79            </td>            <td>                73            </td>            <td>                47            </td>            <td>                8            </td>            <td>                91            </td>            <td>                526            </td>        </tr>        <tr>            <td>                姓名32            </td>            <td>                班级1            </td>            <td>                29            </td>            <td>                25            </td>            <td>                146            </td>            <td>                28            </td>            <td>                79            </td>            <td>                73            </td>            <td>                47            </td>            <td>                8            </td>            <td>                91            </td>            <td>                526            </td>        </tr>        <tr>            <td>                姓名32            </td>            <td>                班级1            </td>            <td>                29            </td>            <td>                25            </td>            <td>                146            </td>            <td>                28            </td>            <td>                79            </td>            <td>                73            </td>            <td>                47            </td>            <td>                8            </td>            <td>                91            </td>            <td>                526            </td>        </tr>        <tr>            <td>                姓名32            </td>            <td>                班级1            </td>            <td>                29            </td>            <td>                25            </td>            <td>                146            </td>            <td>                28            </td>            <td>                79            </td>            <td>                73            </td>            <td>                47            </td>            <td>                8            </td>            <td>                91            </td>            <td>                526            </td>        </tr>        <tr>            <td>                姓名32            </td>            <td>                班级1            </td>            <td>                29            </td>            <td>                25            </td>            <td>                146            </td>            <td>                28            </td>            <td>                79            </td>            <td>                73            </td>            <td>                47            </td>            <td>                8            </td>            <td>                91            </td>            <td>                526            </td>        </tr>        <tr>            <td>                姓名32            </td>            <td>                班级1            </td>            <td>                29            </td>            <td>                25            </td>            <td>                146            </td>            <td>                28            </td>            <td>                79            </td>            <td>                73            </td>            <td>                47            </td>            <td>                8            </td>            <td>                91            </td>            <td>                526            </td>        </tr>        <tr>            <td>                姓名32            </td>            <td>                班级1            </td>            <td>                29            </td>            <td>                25            </td>            <td>                146            </td>            <td>                28            </td>            <td>                79            </td>            <td>                73            </td>            <td>                47            </td>            <td>                8            </td>            <td>                91            </td>            <td>                526            </td>        </tr>        <tr>            <td>                姓名32            </td>            <td>                班级1            </td>            <td>                29            </td>            <td>                25            </td>            <td>                146            </td>            <td>                28            </td>            <td>                79            </td>            <td>                73            </td>            <td>                47            </td>            <td>                8            </td>            <td>                91            </td>            <td>                526            </td>        </tr>        <tr>            <td>                姓名32            </td>            <td>                班级1            </td>            <td>                29            </td>            <td>                25            </td>            <td>                146            </td>            <td>                28            </td>            <td>                79            </td>            <td>                73            </td>            <td>                47            </td>            <td>                8            </td>            <td>                91            </td>            <td>                526            </td>        </tr>        <tr>            <td>                姓名32            </td>            <td>                班级1            </td>            <td>                29            </td>            <td>                25            </td>            <td>                146            </td>            <td>                28            </td>            <td>                79            </td>            <td>                73            </td>            <td>                47            </td>            <td>                8            </td>            <td>                91            </td>            <td>                526            </td>        </tr>        <tr>            <td>                姓名32            </td>            <td>                班级1            </td>            <td>                29            </td>            <td>                25            </td>            <td>                146            </td>            <td>                28            </td>            <td>                79            </td>            <td>                73            </td>            <td>                47            </td>            <td>                8            </td>            <td>                91            </td>            <td>                526            </td>        </tr>        <tr>            <td>                姓名32            </td>            <td>                班级1            </td>            <td>                29            </td>            <td>                25            </td>            <td>                146            </td>            <td>                28            </td>            <td>                79            </td>            <td>                73            </td>            <td>                47            </td>            <td>                8            </td>            <td>                91            </td>            <td>                526            </td>        </tr>        <tr>            <td>                姓名32            </td>            <td>                班级1            </td>            <td>                29            </td>            <td>                25            </td>            <td>                146            </td>            <td>                28            </td>            <td>                79            </td>            <td>                73            </td>            <td>                47            </td>            <td>                8            </td>            <td>                91            </td>            <td>                526            </td>        </tr>        <tr>            <td>                姓名32            </td>            <td>                班级1            </td>            <td>                29            </td>            <td>                25            </td>            <td>                146            </td>            <td>                28            </td>            <td>                79            </td>            <td>                73            </td>            <td>                47            </td>            <td>                8            </td>            <td>                91            </td>            <td>                526            </td>        </tr>        <tr>            <td>                姓名32            </td>            <td>                班级1            </td>            <td>                29            </td>            <td>                25            </td>            <td>                146            </td>            <td>                28            </td>            <td>                79            </td>            <td>                73            </td>            <td>                47            </td>            <td>                8            </td>            <td>                91            </td>            <td>                526            </td>        </tr>    </tbody></table>
0 0
原创粉丝点击