当前位置:Gxlcms > JavaScript > js实现html table 行,列锁定的简单实例

js实现html table 行,列锁定的简单实例

时间:2021-07-01 10:21:17 帮助过:20人阅读

js实现html table 表头,指定列锁定

实现效果如下:

 

 感兴趣的朋友可以直接复制出来运行看效果。

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <title>new document</title>
  5. <script type="text/javascript"
  6. src="http://code.jquery.com/jquery-1.6.1.min.js"></script>
  7. <script type="text/javascript">
  8. function FixTable(TableID, FixColumnNumber, width, height) {
  9. /// <summary>
  10. /// 锁定表头和列
  11. /// <para> sorex.cnblogs.com </para>
  12. /// </summary>
  13. /// <param name="TableID" type="String">
  14. /// 要锁定的Table的ID
  15. /// </param>
  16. /// <param name="FixColumnNumber" type="Number">
  17. /// 要锁定列的个数
  18. /// </param>
  19. /// <param name="width" type="Number">
  20. /// 显示的宽度
  21. /// </param>
  22. /// <param name="height" type="Number">
  23. /// 显示的高度
  24. /// </param>
  25. if ($("#" + TableID + "_tableLayout").length != 0) {
  26. $("#" + TableID + "_tableLayout").before($("#" + TableID));
  27. $("#" + TableID + "_tableLayout").empty();
  28. }
  29. else {
  30. $("#" + TableID).after("<div id='" + TableID + "_tableLayout' style='overflow:hidden;height:" + height + "px; width:" + width + "px;'></div>");
  31. }
  32. $('<div id="' + TableID + '_tableFix"></div>'
  33. + '<div id="' + TableID + '_tableHead"></div>'
  34. + '<div id="' + TableID + '_tableColumn"></div>'
  35. + '<div id="' + TableID + '_tableData"></div>').appendTo("#" + TableID + "_tableLayout");
  36. var oldtable = $("#" + TableID);
  37. var tableFixClone = oldtable.clone(true);
  38. tableFixClone.attr("id", TableID + "_tableFixClone");
  39. $("#" + TableID + "_tableFix").append(tableFixClone);
  40. var tableHeadClone = oldtable.clone(true);
  41. tableHeadClone.attr("id", TableID + "_tableHeadClone");
  42. $("#" + TableID + "_tableHead").append(tableHeadClone);
  43. var tableColumnClone = oldtable.clone(true);
  44. tableColumnClone.attr("id", TableID + "_tableColumnClone");
  45. $("#" + TableID + "_tableColumn").append(tableColumnClone);
  46. $("#" + TableID + "_tableData").append(oldtable);
  47. $("#" + TableID + "_tableLayout table").each(function () {
  48. $(this).css("margin", "0");
  49. });
  50. var HeadHeight = $("#" + TableID + "_tableHead thead").height();
  51. HeadHeight += 2;
  52. $("#" + TableID + "_tableHead").css("height", HeadHeight);
  53. $("#" + TableID + "_tableFix").css("height", HeadHeight);
  54. var ColumnsWidth = 0;
  55. var ColumnsNumber = 0;
  56. $("#" + TableID + "_tableColumn tr:last td:lt(" + FixColumnNumber + ")").each(function () {
  57. ColumnsWidth += $(this).outerWidth(true);
  58. ColumnsNumber++;
  59. });
  60. ColumnsWidth += 2;
  61. if ($.browser.msie) {
  62. switch ($.browser.version) {
  63. case "7.0":
  64. if (ColumnsNumber >= 3) ColumnsWidth--;
  65. break;
  66. case "8.0":
  67. if (ColumnsNumber >= 2) ColumnsWidth--;
  68. break;
  69. }
  70. }
  71. $("#" + TableID + "_tableColumn").css("width", ColumnsWidth);
  72. $("#" + TableID + "_tableFix").css("width", ColumnsWidth);
  73. $("#" + TableID + "_tableData").scroll(function () {
  74. $("#" + TableID + "_tableHead").scrollLeft($("#" + TableID + "_tableData").scrollLeft());
  75. $("#" + TableID + "_tableColumn").scrollTop($("#" + TableID + "_tableData").scrollTop());
  76. });
  77. $("#" + TableID + "_tableFix").css({ "overflow": "hidden", "position": "relative", "z-index": "50", "background-color": "Silver" });
  78. $("#" + TableID + "_tableHead").css({ "overflow": "hidden", "width": width - 17, "position": "relative", "z-index": "45", "background-color": "Silver" });
  79. $("#" + TableID + "_tableColumn").css({ "overflow": "hidden", "height": height - 17, "position": "relative", "z-index": "40", "background-color": "Silver" });
  80. $("#" + TableID + "_tableData").css({ "overflow": "scroll", "width": width, "height": height, "position": "relative", "z-index": "35" });
  81. if ($("#" + TableID + "_tableHead").width() > $("#" + TableID + "_tableFix table").width()) {
  82. $("#" + TableID + "_tableHead").css("width", $("#" + TableID + "_tableFix table").width());
  83. $("#" + TableID + "_tableData").css("width", $("#" + TableID + "_tableFix table").width() + 17);
  84. }
  85. if ($("#" + TableID + "_tableColumn").height() > $("#" + TableID + "_tableColumn table").height()) {
  86. $("#" + TableID + "_tableColumn").css("height", $("#" + TableID + "_tableColumn table").height());
  87. $("#" + TableID + "_tableData").css("height", $("#" + TableID + "_tableColumn table").height() + 17);
  88. }
  89. $("#" + TableID + "_tableFix").offset($("#" + TableID + "_tableLayout").offset());
  90. $("#" + TableID + "_tableHead").offset($("#" + TableID + "_tableLayout").offset());
  91. $("#" + TableID + "_tableColumn").offset($("#" + TableID + "_tableLayout").offset());
  92. $("#" + TableID + "_tableData").offset($("#" + TableID + "_tableLayout").offset());
  93. }
  94. $(document).ready(function () {
  95. FixTable("MyTable", 1, 600, 400);
  96. });
  97. </script>
  98. </head>
  99. <body>
  100. <table style="border-bottom-color: black; border-top-color: black; width: 1000px; color: #000000; border-right-color: black; font-size: medium; border-left-color: black"
  101. id="MyTable" border="1" cellspacing="0" cellpadding="0">
  102. <thead>
  103. <tr>
  104. <th style="text-align: center; width: 80px" rowspan="3">姓名</th>
  105. <th style="text-align: center; width: 80px" rowspan="3">班级</th>
  106. <th style="text-align: center" colspan="10">成绩</th>
  107. </tr>
  108. <tr>
  109. <th style="text-align: center" colspan="3">主科</th>
  110. <th style="text-align: center" colspan="3">文科</th>
  111. <th style="text-align: center" colspan="3">理科</th>
  112. <th style="text-align: center; width: 80px" rowspan="2">总分</th>
  113. </tr>
  114. <tr>
  115. <th style="text-align: center; width: 80px">语文</th>
  116. <th style="text-align: center; width: 80px">数学</th>
  117. <th style="text-align: center; width: 80px">英语</th>
  118. <th style="text-align: center; width: 80px">政治</th>
  119. <th style="text-align: center; width: 80px">历史</th>
  120. <th style="text-align: center; width: 80px">地理</th>
  121. <th style="text-align: center; width: 80px">物理</th>
  122. <th style="text-align: center; width: 80px">化学</th>
  123. <th style="text-align: center; width: 80px">生物</th>
  124. </tr>
  125. <!--
  126. <tr>
  127. <th style="width: 80px; text-align: center;" _mce_style="width: 80px; text-align: center;">
  128. 姓名
  129. </th>
  130. <th style="width: 80px; text-align: center;" _mce_style="width: 80px; text-align: center;">
  131. 班级
  132. </th>
  133. <th style="width: 80px; text-align: center;" _mce_style="width: 80px; text-align: center;">
  134. 语文
  135. </th>
  136. <th style="width: 80px; text-align: center;" _mce_style="width: 80px; text-align: center;">
  137. 数学
  138. </th>
  139. <th style="width: 80px; text-align: center;" _mce_style="width: 80px; text-align: center;">
  140. 英语
  141. </th>
  142. <th style="width: 80px; text-align: center;" _mce_style="width: 80px; text-align: center;">
  143. 政治
  144. </th>
  145. <th style="width: 80px; text-align: center;" _mce_style="width: 80px; text-align: center;">
  146. 历史
  147. </th>
  148. <th style="width: 80px; text-align: center;" _mce_style="width: 80px; text-align: center;">
  149. 地理
  150. </th>
  151. <th style="width: 80px; text-align: center;" _mce_style="width: 80px; text-align: center;">
  152. 物理
  153. </th>
  154. <th style="width: 80px; text-align: center;" _mce_style="width: 80px; text-align: center;">
  155. 化学
  156. </th>
  157. <th style="width: 80px; text-align: center;" _mce_style="width: 80px; text-align: center;">
  158. 生物
  159. </th>
  160. <th style="width: 80px; text-align: center;" _mce_style="width: 80px; text-align: center;">
  161. 总分
  162. </th>
  163. </tr>
  164. -->
  165. </thead>
  166. <tbody>
  167. <!-- 数据行 -->
  168. <tr>
  169. <td>学生32</td>
  170. <td>班级1</td>
  171. <td>29</td>
  172. <td>25</td>
  173. <td>146</td>
  174. <td>28</td>
  175. <td>79</td>
  176. <td>73</td>
  177. <td>47</td>
  178. <td>8</td>
  179. <td>91</td>
  180. <td>526</td>
  181. </tr>
  182. <tr>
  183. <td>学生32</td>
  184. <td>班级1</td>
  185. <td>29</td>
  186. <td>25</td>
  187. <td>146</td>
  188. <td>28</td>
  189. <td>79</td>
  190. <td>73</td>
  191. <td>47</td>
  192. <td>8</td>
  193. <td>91</td>
  194. <td>526</td>
  195. </tr>
  196. <tr>
  197. <td>学生32</td>
  198. <td>班级1</td>
  199. <td>29</td>
  200. <td>25</td>
  201. <td>146</td>
  202. <td>28</td>
  203. <td>79</td>
  204. <td>73</td>
  205. <td>47</td>
  206. <td>8</td>
  207. <td>91</td>
  208. <td>526</td>
  209. </tr>
  210. <tr>
  211. <td>学生32</td>
  212. <td>班级1</td>
  213. <td>29</td>
  214. <td>25</td>
  215. <td>146</td>
  216. <td>28</td>
  217. <td>79</td>
  218. <td>73</td>
  219. <td>47</td>
  220. <td>8</td>
  221. <td>91</td>
  222. <td>526</td>
  223. </tr>
  224. <tr>
  225. <td>学生32</td>
  226. <td>班级1</td>
  227. <td>29</td>
  228. <td>25</td>
  229. <td>146</td>
  230. <td>28</td>
  231. <td>79</td>
  232. <td>73</td>
  233. <td>47</td>
  234. <td>8</td>
  235. <td>91</td>
  236. <td>526</td>
  237. </tr>
  238. <tr>
  239. <td>学生32</td>
  240. <td>班级1</td>
  241. <td>29</td>
  242. <td>25</td>
  243. <td>146</td>
  244. <td>28</td>
  245. <td>79</td>
  246. <td>73</td>
  247. <td>47</td>
  248. <td>8</td>
  249. <td>91</td>
  250. <td>526</td>
  251. </tr>
  252. <tr>
  253. <td>学生32</td>
  254. <td>班级1</td>
  255. <td>29</td>
  256. <td>25</td>
  257. <td>146</td>
  258. <td>28</td>
  259. <td>79</td>
  260. <td>73</td>
  261. <td>47</td>
  262. <td>8</td>
  263. <td>91</td>
  264. <td>526</td>
  265. </tr>
  266. <tr>
  267. <td>学生32</td>
  268. <td>班级1</td>
  269. <td>29</td>
  270. <td>25</td>
  271. <td>146</td>
  272. <td>28</td>
  273. <td>79</td>
  274. <td>73</td>
  275. <td>47</td>
  276. <td>8</td>
  277. <td>91</td>
  278. <td>526</td>
  279. </tr>
  280. <tr>
  281. <td>学生32</td>
  282. <td>班级1</td>
  283. <td>29</td>
  284. <td>25</td>
  285. <td>146</td>
  286. <td>28</td>
  287. <td>79</td>
  288. <td>73</td>
  289. <td>47</td>
  290. <td>8</td>
  291. <td>91</td>
  292. <td>526</td>
  293. </tr>
  294. <tr>
  295. <td>学生32</td>
  296. <td>班级1</td>
  297. <td>29</td>
  298. <td>25</td>
  299. <td>146</td>
  300. <td>28</td>
  301. <td>79</td>
  302. <td>73</td>
  303. <td>47</td>
  304. <td>8</td>
  305. <td>91</td>
  306. <td>526</td>
  307. </tr>
  308. <tr>
  309. <td>学生32</td>
  310. <td>班级1</td>
  311. <td>29</td>
  312. <td>25</td>
  313. <td>146</td>
  314. <td>28</td>
  315. <td>79</td>
  316. <td>73</td>
  317. <td>47</td>
  318. <td>8</td>
  319. <td>91</td>
  320. <td>526</td>
  321. </tr>
  322. <tr>
  323. <td>学生32</td>
  324. <td>班级1</td>
  325. <td>29</td>
  326. <td>25</td>
  327. <td>146</td>
  328. <td>28</td>
  329. <td>79</td>
  330. <td>73</td>
  331. <td>47</td>
  332. <td>8</td>
  333. <td>91</td>
  334. <td>526</td>
  335. </tr>
  336. <tr>
  337. <td>学生32</td>
  338. <td>班级1</td>
  339. <td>29</td>
  340. <td>25</td>
  341. <td>146</td>
  342. <td>28</td>
  343. <td>79</td>
  344. <td>73</td>
  345. <td>47</td>
  346. <td>8</td>
  347. <td>91</td>
  348. <td>526</td>
  349. </tr>
  350. <tr>
  351. <td>学生32</td>
  352. <td>班级1</td>
  353. <td>29</td>
  354. <td>25</td>
  355. <td>146</td>
  356. <td>28</td>
  357. <td>79</td>
  358. <td>73</td>
  359. <td>47</td>
  360. <td>8</td>
  361. <td>91</td>
  362. <td>526</td>
  363. </tr>
  364. <tr>
  365. <td>学生32</td>
  366. <td>班级1</td>
  367. <td>29</td>
  368. <td>25</td>
  369. <td>146</td>
  370. <td>28</td>
  371. <td>79</td>
  372. <td>73</td>
  373. <td>47</td>
  374. <td>8</td>
  375. <td>91</td>
  376. <td>526</td>
  377. </tr>
  378. <tr>
  379. <td>学生32</td>
  380. <td>班级1</td>
  381. <td>29</td>
  382. <td>25</td>
  383. <td>146</td>
  384. <td>28</td>
  385. <td>79</td>
  386. <td>73</td>
  387. <td>47</td>
  388. <td>8</td>
  389. <td>91</td>
  390. <td>526</td>
  391. </tr>
  392. </tbody>
  393. </table>
  394. </body>
  395. </html>

以上就是小编为大家带来的js实现html table 行,列锁定的简单实例全部内容了,希望大家多多支持脚本之家~

人气教程排行