当时遇见这个问题 是医院手麻系统大批量数据展示,由于是旧项目系统没有使用到前端的架构 只能使用JQ,JS, css完成 也谢谢给予我支持的同行们

固定首行数据: 采用函数的方式进行  JQ
/**
* 功能:固定表头
* 参数 viewid 表格的id
* scrollid 滚动条所在容器的id
* size 表头的行数(复杂表头可能不止一行)
*/
function scroll(viewid, scrollid, size) {
  // 获取滚动条容器
  var container = document.getElementById(scrollid);
  // 将表格拷贝一份
  var tb2 = document.getElementById(viewid).cloneNode(true);
  // 获取表格的行数
  var len = tb2.rows.length;
  // 将拷贝得到的表格中非表头行删除
  for (var i = tb2.rows.length; i > size; i--) {
    // 每次删除数据行的第一行
    tb2.deleteRow(size);
  }
  // 创建一个div
  var bak = document.createElement("div");
  // 将div添加到滚动条容器中
  container.appendChild(bak);
  // 将拷贝得到的表格在删除数据行后添加到创建的div中
  bak.appendChild(tb2);
  // 设置创建的div的position属性为absolute,即绝对定于滚动条容器(滚动条容器的position属性必须为relative)
  bak.style.position = "absolute";
  // 设置创建的div的背景色与原表头的背景色相同(貌似不是必须)
  bak.style.backgroundColor = "#cfc";
  // 设置div的display属性为block,即显示div(貌似也不是必须,但如果你不希望总是显示拷贝得来的表头,这个属性还是有用处的)
  bak.style.display = "block";
  // 设置创建的div的left属性为0,即该div与滚动条容器紧贴
  bak.style.left = 0;
  // 设置div的top属性为0,初期时滚动条位置为0,此属性与left属性协作达到遮盖原表头
  bak.style.top = "0px";
  bak.style.width = "100%";
  // 给滚动条容器绑定滚动条滚动事件,在滚动条滚动事件发生时,调整拷贝得来的表头的top值,保持其在可视范围内,且在滚动条容器的顶端
  container.onscroll = function () {
    // 设置div的top值为滚动条距离滚动条容器顶部的距离值
    bak.style.top = this.scrollTop + "px";
  }
}

  // 在页面加载完成后调用该方法
  window.onload = function () {
    scroll("recordDetail", "tableDiv", 1);
  }

数据格式展示:
<div id="tableDiv" style="overflow-x:auto;" class="wrapper">
<table id='recordDetail' class="researh" style="border-collapse: collapse; table-layout: fixed; clear: both; cursor: pointer;">
  <tr id="DetailTh" class="FixedTitleRow" style="width:100%;"></tr>
  <tr id="DatailList" style="width:100%;" ></tr>
</table>

首列固定展示: CSS样式进行
<script type="text/javascript">
  $("#tableDiv").scroll(function () {//给table外面的div滚动事件绑定一个函数
    var left = $("#tableDiv").scrollLeft();//获取滚动的距离
    var trs = $("#tableDiv table tr");//获取表格的所有tr
    trs.each(function (i) {//对每一个tr(每一行)进行处理
      //获得每一行下面的所有的td,然后选中下标为0的,即第一列,设置position为相对定位
      //相对于父div左边的距离为滑动的距离,然后设置个背景颜色,覆盖住后面几列数据滑动到第一列下面的情况
      //如果有必要也可以设置一个z-index属性
      $(this).children().eq(0).css({ "position": "relative", "top": "0px", "left": left, "background-color": "white" });
    });
  });

</script>

关于JS、JQ首行首列固定展示的更多相关文章

  1. excel如何冻结首行或首列及首行首列同时冻结

    冻结首行方法: 首先选择首行,在菜单栏选择视图菜单,再选择冻结窗格下拉三角里的冻结首行即可. 效果如下:拖动垂直滚动条 冻结首列方法: 首先选择首列,在菜单栏选择视图菜单,再选择冻结窗格下拉三角里的冻 ...

  2. 前端基于JQgrid实现自定义列头展示

    先上效果图   因为公司项目的需要,并且公司只有我这一个能写js的前端,这个自定义展示jqgrid列选项的需求依然是交由我写,辣么就分享一下我的工作成果. //初始化函数 multiSelectCol ...

  3. js中文首字母数组排序

    js中文首字母数组排序 数组的排序js算法: var Pinyin = (function() { var Pinyin = function(ops) { this.initialize(ops); ...

  4. CSS样式实现表头和列固定

    效果图:第一行和第一列固定       <!DOCTYPE html> <html lang="zh"> <head> <meta cha ...

  5. JS+JQ手风琴效果

    最新在学习JS写一些实用的小玩意——手风琴 CSS样式: <style type="text/css"> * { margin: 0px; border: 0px; p ...

  6. js控制页面的全屏展示和退出全屏显示

    <!DOCTYPE html> <html> <meta http-equiv="Content-Type" content="text/h ...

  7. js&jq 发送验证码倒计时

    <input  type="text"   name=''  id="btn"> //发送验证码倒计时var wait=30; function t ...

  8. easyui datagrid 表头固定(垂直滚动条)、列固定(水平滚动条)

    easyui datagrid 表头固定(垂直滚动条).列固定(水平滚动条),每页显示1000行 最近用多了easyui 之后还是觉得它的功能还是很强大的.它原有的功能就已经能够满足90%以上的界面需 ...

  9. jq常用事件(on,blur,focus,change),js/jq等待图片(页面)加载完毕事件,js读取文件

    jq常用事件(on,blur,focus,change) // 方法一(推荐) $('.box').on( "click",function() {} ) $('.box').on ...

随机推荐

  1. Python自学day-2

    一.模块     模块分两种:标准库和第三方库,标准库是不需要安装就可以使用的库.     import [模块名]:导入一个库,优先是在项目路径中寻找.自定义模块名不要和标准库模块名相同.   sy ...

  2. Spark学习之路(四)—— RDD常用算子详解

    一.Transformation spark常用的Transformation算子如下表: Transformation算子 Meaning(含义) map(func) 对原RDD中每个元素运用 fu ...

  3. 给 Windows 的终端配置代理

    初衷 由于项目开发使用go,所以经常要用到go get,但是吧,terminal下根本没办法下载啊,经常下载三个小时包,写代码一个小时 迫于无奈,只好找个方式可以在terminal下使用ss cmd下 ...

  4. PATA 1027 Colors In Mars

    #include <cstdio> char radix[13] = {'0','1','2','3','4','5','6','7','8','9','A','B','C'}; int ...

  5. 08、MySQL—字符串型

    字符串型 1.Char 定长字符:指定长度之后,系统一定会分配指定的空间用于存储数据 基本语法: char(L),L代表字符数(中文与英文字母一样),L长度为0到255 2.Varchar 变长字符: ...

  6. Python静态方法,其实暗藏玄机

    文章首发于 微信公众号:Python编程时光 这个标题「静态方法其实暗藏玄机」其实只是该文章的一个知识点.或许有些标题党,但没有关系,我相信有不少人对此并没有深入研究他们,不信我问你三个问题,你看能否 ...

  7. 基于C#的机器学习--旅行推销员问题

    我们有一个必须在n个城市之间旅行的推销员.他不在乎什么顺序.他最先或最后访问的城市除外.他唯一关心的是他会去拜访每一个人,每个城市只有一次,最后一站是他得家. 每个城市都是一个节点,每个节点通过一条边 ...

  8. scrapy基础知识之将item 通过pipeline保存数据到mysql mongoDB:

    pipelines.py class xxPipeline(object): def process_item(self, item, spider): con=pymysql.connect(hos ...

  9. WordPress教程之如何入门WordPress

    这篇文章将介绍如何设置 WordPress,并自定义其基本功能.WordPress 的安装包相对较小(低于 10 MB),非常易于安装和管理.为了托管自己的网站,你可以获得几个不同的选项. 你可以通过 ...

  10. C++学习书籍推荐《Exceptional C++》下载

    百度云及其他网盘下载地址:点我 编辑推荐 <Exceptional C++:47个C++工程难题.编程问题和解决方案(中文版)>中的每个问题都给出了难度系数,在这些问题中阐释一些微妙的编程 ...