




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Js表格,万条数据瞬间加载在Ajax动态加载数据的实际应用中,大家都习惯了一种思维方式:一条数据创建一行。于是如果数量大的时候,一次性要加载完数据的话,浏览器就会卡上半天受Flex的DataGrid控件的启发,在Flex的DataGrid控件中,展示数据的方法并不是有多少条数据就创建多少行,它最多只创建你在界面上所看到的十几二十行(假设为n行),如果数据多的话,在滚动过程中,会从数据中抽取你应该看到的这n行数据,重新展示在已经创建好的那n行控件中。也就是说,Flex的DataGrid控件中,我们实际上看到的仅仅是那n行控件,只是它们展示的数据是根据滚动条状态来筛选出来的。所以,如果在JS中,也用类似的方法实现,那么就是上万条数据,可能也只要创建几十个Dom而已,效率自然快得多了。废话不多说,上代码。首先,需要一个滚动条Scrollbar.js复制代码1. function Scrollbar() 2. this.options = 3. total : 0, /数据总数4. pos : 0, /当前滚动位置5. itemSize : 20, /单项尺寸6. size : 200 /控件尺寸7. ;8. 9. Stotype = (function () 10. function setOptions(options) 11. for (var attr in options) 12. this.optionsattr = optionsattr;13. 14. Refresh(this);15. 16. function Refresh(_this) 17. if (!_this.created)18. return; /设置控件高度19. _this.bar.style.height = _this.options.size + px;20. /设置内容高度21. var ch = _this.options.total * _this.options.itemSize;22. _this.content.style.height = ch + px;23. 24. /获取滚动位置25. function getPos() 26. var top = this.bar.scrollTop;27. var pos = parseInt(top / this.options.itemSize);28. return pos;29. 30. /每页可展示的数据数量31. function getPageItems() 32. return this.options.size / this.options.itemSize;33. 34. /滚动事件响应35. function OnScroll(_this) 36. var pos = _this.getPos();37. if (pos = _this.options.pos)38. return;39. _this.options.pos = pos;40. _this.onScroll(pos);41. 42. /滚动条创建43. function CreateAt(dom) 44. var _this = this;45. var bar = document.createElement(div);46. var content = document.createElement(div);47. bar.appendChild(content);48. bar.style.width = 19px;49. bar.style.overflowY = scroll;50. bar.style.overflowX = hidden;51. if (bar.attachEvent) 52. bar.attachEvent(onscroll, function () 53. OnScroll(_this);54. );55. else 56. /firefox兼容57. bar.addEventListener(scroll, function () 58. OnScroll(_this);59. , false);60. 61. content.style.backgroundColor = white;62. content.style.width = 1px;63. this.bar = bar;64. this.content = content;65. if (typeof(dom) = string) 66. dom = document.getElementById(dom);67. 68. dom.innerHTML = ;69. dom.appendChild(this.bar);70. this.created = true;71. Refresh(this);72. 73. return 74. setOptions : setOptions,75. CreateAt : CreateAt,76. getPos : getPos,77. getPageItems : getPageItems,78. onScroll : null79. /模拟滚动条事件80. ;81. )();页面代码:复制代码1. 2. 3. 4. 5. 6. 表格控件7. 8. 9. 10. 11. var data = ;12. /创建一万条示例数据13. for (var i = 0; i 10000; i+) 14. var row = 15. id: i,16. text: text + i17. ;18. data.push(row);19. 20. /创建滚动条21. var scrbar = new Scrollbar();22. window.onload = function() 23. scrbar.CreateAt(divScroll);24. scrbar.setOptions(25. total: 10000,26. size: 30027. );28. scrbar.onScroll = function(pos) 29. ShowData(pos);30. 31. /获取模板32. var items = scrbar.getPageItems();33. var tpl = document.getElementById(trTpl);34. tpl.parentNode.removeChild(tpl);35. /仅创建所看到的几十行表格,所以自然快得多36. var list = document.getElementById(tblList);37. for (var i = 0; i data.length & i items; i+) 38. var nr = tpl.cloneNode(true);39. /从模板行复制新行40. list.appendChild(nr);41. 42. ShowData(scrbar.getPos();43. 44. /根据滚动条,展示数据45. function ShowData(pos) 46. var n = scrbar.getPageItems();47. var rows = document.getElementById(tblList).rows;48. for (var i = 0; i n; i+) 49. var row = rowsi;50. var item = datai + pos;51. row.cellstdID.innerHTML = itemid;52. row.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025河南郑州海康威视郑州招聘考前自测高频考点模拟试题附答案详解(突破训练)
- 2025年临沂兰山区教育和体育局部分事业单位公开招聘教师(55名)模拟试卷附答案详解(黄金题型)
- 世界著名渔人码头案例分析
- 2025私营单位合作协议范本
- 碱液灼烫安全培训课件
- 建立合作关系协议
- 2025股权转让合同签订破产企业收购协议
- 接口与协议书
- 装修邻居赔偿协议书
- 家庭分家协议书
- 2025-2026学年上学期七年级历史第一次月考卷(含答案)
- 2025中远海运港口有限公司社会招聘2人笔试历年参考题库附带答案详解
- 高压氧治疗脑卒中
- 2025年三峡银行考试真题及答案
- 10KV变电送受电安全作业方案
- 江苏省水利工程单元工程施工质量验收常用表格(2025.6.18)
- 【初中数学】单项式与单项式相乘(课件)+华东师大版(2024)数学八年级上册
- 双十一货车租车协议合同
- 2025至2030年中国铜管乐器行业市场全景评估及投资前景展望报告
- 2024物业管理考试试题及参考答案
- 证券投资2025新改实训指导
评论
0/150
提交评论