0 0

div table的效率10

项目开始用DOJO的TABLE, 但不太好用, 我仿EXT重写了一个WIDGET,但发现,表现并不好,比如表头随滚动条滚动.我想用DIV重构,大家有谁做过啊,效率怎么样.
数据量1000条左右,支持排序和拖动列宽.
2008年8月28日 23:57

1个答案 按时间排序 按投票排序

0 0

<html> 
 <head> 
 <title></title> 
 <style> 
 td {border-bottom:1px solid Black; border-left:1px solid Black} 
 .title {border-left:1px solid #FFFFFF; border-top:1px solid #FFFFFF; border-right:1px solid #666666; border-bottom:1px solid #666666; background:#999999; color:#FFFFFF;} 
 .left {border-left:2px solid Black} 
 .right {border-right:2px solid Black} 
 .bottom {border-bottom:2px solid Black} 
 .bottomleft {border-bottom:2px solid Black; border-left:2px solid Black} 
 .bottomright {border-bottom:2px solid Black; border-right:2px solid Black} 
 </style> 
 <script> 
 /**************************************** 
 蒋玉龙编制于2002-8-6 星期二 
 QQ:66840199 
 用时5个小时,功能:实现首行根据边框调整表格大小; 
 请保留相关信息 
 
 Powered by Stone, 2003-04-15 
 ****************************************/ 
 //记录鼠标状态, 记录鼠标按下, 记录当前列 
 var curState, curDown, curCol; 
 var oldPlace, newPlace; 
 
 function getTable(item) { 
 var obj = null; 
 do { 
 if (item.tagName=="TABLE") { 
 obj = item; 
 break; 
 } 
 item = item.offsetParent; 
 } 
 while (item != null); 
 return obj; 
 } 
 
 function calculateOffset(item, offsetName) { 
 var totalOffset = 0; 
 do { 
 totalOffset += eval('item.offset' + offsetName); 
 item = item.offsetParent; 
 } 
 while (item != null); 
 return totalOffset; 
 } 
 
 function moveCol(objCol) { 
 window.status = window.document.body.scrollLeft; 
 if (!curDown) { 
 //curCol = objCol; 
 //鼠标没有按下 
 if (window.event.x + window.document.body.scrollLeft > calculateOffset(objCol, "Left") + objCol.offsetWidth-3) { 
 //移动到了相应的部位/改变鼠标 
 curState=true; 
 window.document.body.style.cursor = "move"; 
 } 
 else { 
 curState = false; 
 window.document.body.style.cursor = "default"; 
 } 
 curCol = objCol; 
 } 
 } 
 
 function upBody() { 
 //鼠标抬起/一切恢复原状态 
 if (curState) { 
 //---------------------------调整表格-------------------------- 
 //调整条件:(层左侧+线左侧=线绝对左侧坐标)>目标的左侧坐标+20 
 newPlace = window.event.x + window.document.body.scrollLeft; 
 if (myDiv.offsetLeft + myLine.offsetLeft > calculateOffset(curCol, "Left") + 20) { 
 if (curCol.width > oldPlace - newPlace) 
 curCol.width -= oldPlace - newPlace; 
 var curTable = getTable(curCol); 
 if (curTable!=null) 
 curTable.width -= oldPlace - newPlace; 
 curCol.innerText = curCol.width; 
 } 
 //------------------------------------------------------------- 
 curState = false; 
 curDown = false; 
 myDiv.style.display = "none"; 
 window.document.body.style.cursor = "default"; 
 } 
 } 
 
 function downBody() { 
 //鼠标按下 
 if (curState) { 
 curDown = true; 
 var curTable = getTable(window.event.srcElement); 
 if (curTable!=null) { 
 //---------定位竖线---------- 
 myDiv.style.display = ""; //层可见 
 myLine.style.height = curTable.offsetHeight; 
 myLine.style.width = 1; 
 myDiv.style.left = window.event.x + window.document.body.scrollLeft - myLine.offsetLeft; 
 myDiv.style.top = calculateOffset(curTable, "Top") - myLine.offsetTop; 
 //--------------------------- 
 oldPlace = window.event.x + window.document.body.scrollLeft; 
 } 
 } 
 } 
 
 function moveBody() { 
 //鼠标移动 
 if (curDown) { 
 //鼠标按下状态 
 myDiv.style.left = window.event.x + window.document.body.scrollLeft - myLine.offsetLeft; 
 window.document.body.style.cursor = "move"; 
 } 
 } 
 
 function selectBody() { 
 //鼠标选择文本[不支持动态调整?] 
 if (curDown) //鼠标按下于调整状态 
 window.event.returnValue = false; 
 } 
 
 function sort(objCol) { 
 var txt = objCol.innerHTML; 
 var sortAsc = false; 
 if (txt.charAt(txt.length - 1)=='↓') 
 sortAsc = true; 
 var objTable = getTable(objCol); 
 for (var i = 0; i < objTable.rows(0).cells.length; i++) { 
 txt = objTable.rows(0).cells(i).innerHTML; 
 if ((txt.charAt(txt.length - 1)=='↓') || (txt.charAt(txt.length - 1)=='↑')) 
 objTable.rows(0).cells(i).innerHTML = txt.substring(0, txt.length - 1); 
 } 
 objCol.innerHTML += (sortAsc?"↑":"↓") 
 sortTable(objCol, sortAsc); 
 } 
 function sortTable(objCol, sortAsc) { 
 if (objCol.tagName == "TD") { 
 var objTable = getTable(objCol); 
 var i,j,k; 
 var intCol = objCol.cellIndex; 
 var boltmp, tmp; 
 for (i = 1; i < objTable.rows.length; i++) 
 for (j = i + 1; j < objTable.rows.length; j++) { 
 boltmp = (objTable.rows(i).cells(intCol).innerText >= objTable.rows(j).cells(intCol).innerText); 
 if ((sortAsc && !boltmp) || (!sortAsc && boltmp)) 
 for (k = 0; k < objTable.rows(0).cells.length; k++) { 
 tmp = objTable.rows(i).cells(k).innerHTML; 
 objTable.rows(i).cells(k).innerHTML = objTable.rows(j).cells(k).innerHTML; 
 objTable.rows(j).cells(k).innerHTML = tmp; 
 } 
 } 
 } 
 } 
 
 function setTableBorder(objTable) { 
 var i,j; 
 for (i = 0; i < objTable.rows.length; i++) 
 for (j = 0; j < objTable.rows(i).cells.length; j++) { 
 if (objTable.rows(i).cells(j).innerHTML == "") 
 objTable.rows(i).cells(j).innerHTML = "&nbsp;"; 
 objTable.rows(i).cells(j).className = (i==0?"title":(i == (objTable.rows.length-1)?"bottom":"") + (j==0?"left":"") + (j == (objTable.rows(i).cells.length-1)?"right":"")); 
 } 
 } 
 </script> 
 </head> 
 <body onmousedown="downBody()" onmouseover="moveBody()" onmouseup="upBody()" onselectstart="selectBody()"> 
 <div id="myDiv" style="display:none; height:201px; left:12px; position:absolute; top:50px; width:28px; z-index:1"> 
 <hr id="myLine" width="1" size="200" noshade color="black"> 
 </div> 
 <table id="myTable" cellpadding="0" cellspacing="0" width="300"> 
 <tr> 
 <td width="100" onclick="sort(this)" onmousemove="moveCol(this)">01</td> 
 <td width="100" onclick="sort(this)" onmousemove="moveCol(this)">02</td> 
 <td width="100" onclick="sort(this)" onmousemove="moveCol(this)">03</td> 
 </tr> 
 <tr> 
 <td onmousemove="moveCol(this)">04</td> 
 <td onmousemove="moveCol(this)">09</td> 
 <td onmousemove="moveCol(this)">10</td> 
 </tr> 
 <tr> 
 <td>05</td> 
 <td>08</td> 
 <td>11</td> 
 </tr> 
 <tr> 
 <td>06</td> 
 <td>07</td> 
 <td>12</td> 
 </tr> 
 </table> 
 <br> 
 <br> 
 <table id="myTable1" cellpadding="0" cellspacing="0" width="300"> 
 <tr> 
 <td width="100" onclick="sort(this)" onmousemove="moveCol(this)">01</td> 
 <td width="100" onclick="sort(this)" onmousemove="moveCol(this)">02</td> 
 <td width="100" onclick="sort(this)" onmousemove="moveCol(this)">03</td> 
 </tr> 
 <tr> 
 <td>04</td> 
 <td>05</td> 
 <td>06</td> 
 </tr> 
 <tr> 
 <td>07</td> 
 <td>08</td> 
 <td>09</td> 
 </tr> 
 <tr> 
 <td>10</td> 
 <td>11</td> 
 <td>12</td> 
 </tr> 
 <tr> 
 <td>13</td> 
 <td>14</td> 
 <td>15</td> 
 </tr> 
 </table> 
 <script> 
 setTableBorder(myTable); 
 setTableBorder(myTable1); 
 </script> 
 </body> 
 </html>


不知道这段代码对你有没用,网上找到,支持排序和表头拖拉列宽

2008年9月01日 12:49

相关推荐

    div table的使用

    本文将深入探讨如何在服务器端利用存储过程生成`table`数据,并将其嵌入到`div`容器中,以实现更灵活的页面布局。 首先,`div`(division)是HTML中的一个块级元素,它主要用于对页面内容进行分组和布局。通过CSS...

    table转div工具

    "table转div工具"就是为了帮助开发者将原有的基于table的布局转换成更现代、更优化的div+CSS布局。 首先,我们需要理解table和div之间的主要差异。Table元素主要用于显示结构化数据,如表格或矩阵。它的布局是固定...

    Div仿制table送自定义Scrollbar支持排序

    为了解决这些问题,开发者们常常选择使用CSS和JavaScript来模拟表格(Div Table)以实现更丰富的功能。本主题"Div仿制table送自定义Scrollbar支持排序"正是探讨这种技术的应用。 首先,Div仿制table是通过CSS布局...

    将table转换成div+css

    通过这款工具,用户可以快速将HTML表格转换为div+CSS的结构,提高工作效率。 5. **注意事项** - 转换后可能需要调整CSS以确保布局正确,特别是对于复杂的表格结构。 - 保持原有表格的语义,比如使用`&lt;caption&gt;`...

    Html Table 转 Div 工具

    在实际开发中,如果你需要从表格转换到Div布局,使用这类工具可以大大提高工作效率。同时,理解HTML和CSS的基本原理,以及如何将表格布局转化为Div布局,对于提升网页设计技能至关重要。通过掌握这些知识,你可以更...

    Table2CSS表格转CSS+DIV布局工具

    综上所述,Table2CSS工具是一个强大且实用的网页设计辅助工具,它简化了从传统表格布局向CSS+DIV布局的转换过程,提高了网页设计的质量和效率。对于那些希望优化网页性能、提升用户体验以及便于维护的设计师来说,这...

    浅谈 div 与 table 如何取舍结合利用

    3. **性能**:大量的 `table` 会影响页面的加载速度,而优化过的 `div` 结构可以提高页面的加载效率。对于性能敏感的网站,应尽可能减少 `table` 的使用。 4. **浏览器兼容性**:虽然现代浏览器对 `div` + CSS 支持...

    html中Div与table的区别(各方面细节探讨)

    本文将探讨Div与Table在速度和加载方式、网页应用以及大型网站可用性等方面的区别。 1. 速度和加载方式的区别: - Div的加载方式是渐进式的,遇到&lt;div&gt;标签就开始加载内容,即使没有找到相应的&lt;/div&gt;,内容也会...

    Layui组件Table绑定行点击事件和获取行数据的方法

    Layui是一个前端UI框架,它提供了一整套的组件,可以非常方便地构建出美观的界面。其中,Table组件是一个常用的数据展示组件,...通过对Layui组件Table的深入学习和实践,可以有效地提高前端开发的效率和页面的交互性。

    DIV+CSS网页制作对搜索引擎优化的优势分析整理.pdf

    2. 采用 Xhtml代码编写页面,抛弃传统Table布局模式,使用DIV+CSS布局可以提高搜索引擎对网页的索引效率,提高页面浏览速度,易于维护和改版等。 DIV+CSS网页制作技术的优势在于其能够将表现与内容分离,提高搜索...

    表格到DIV转换工具

    3. **批量转换**: 对于包含多个表格的网页或整个目录,Table2CSS支持批量转换功能,极大地提高了工作效率。开发者无需手动处理每个文件,节省了大量时间。 4. **保持原格式**: 在转换过程中,Table2CSS会尽可能地...

    Laravel开发-laravel-tabler

    **Laravel 开发与 Laravel Tabler 深度解析** ...而 Laravel Tabler 是一个专门为 Laravel 设计的,用于集成 ...无论是新手还是经验丰富的开发者,Laravel Tabler 都能帮助你提升开发效率,创造出令人满意的 Web 应用。

    中小型企业静态网站table布局

    在构建中小型企业静态网站时,布局设计是至关重要的一步,它直接影响到用户的浏览体验和信息传递的效率。在这个案例中,我们关注的是“table布局”,一种传统的网页布局方式,尤其适用于展示结构化数据,如纺织品的...

    jsp页面Table自动换行

    在网页设计中,表格的换行通常是由于表格内容过多,超过了容器(如div或浏览器窗口)的宽度,导致表格需要在视觉上分成多行显示。在JSP中,这可以通过CSS样式和HTML属性来控制。 【描述】提到的“Linux文档”可能是...

    新手学习DIV+CSS难点之经验总结

    ### 新手学习DIV+CSS难点之经验总结 #### 一、网页居中显示 ...通过上述的技巧和解决方案,新手开发者可以更好地理解和掌握DIV+CSS的基本用法和常见问题,从而提高开发效率,实现更美观和实用的网页布局。

    用div+css写个日历控件

    以前写日历控件,都是用table,结果拼半天!现在用div+css写日历控件,可以用div的一个特性,就是当它排不下的时候,就自动换行,那还用得着拼么?因此效率大大增加,一个简单的日历控件,十分钟搞定!大家可以下载...

    DIV样式和设置PPT学习教案.pptx

    【DIV样式和设置】是...理解并熟练运用`DIV`可以提升网页设计的效率和质量,特别是在响应式设计和动态布局方面,`DIV`起着关键作用。在实际应用中,需要结合CSS来定义`DIV`的样式,以实现丰富的视觉效果和交互功能。

    jQuery实现Table分页跳转

    &lt;div id="pagination"&gt;&lt;/div&gt; ``` 2. **数据获取**:与后端接口进行交互,获取所有数据或者初始分页数据。可以使用Ajax异步请求,例如使用`$.ajax()`或`$.getJSON()`。 3. **分页插件**:虽然可以手动实现分页逻辑...

    jquery锁定table 行列功能

    $('table').before(lockedHeader.wrap('&lt;div class="sticky-header"&gt;&lt;/div&gt;').parent()); $(window).scroll(function() { var scrollTop = $(this).scrollTop(); if (scrollTop &gt; $('table').offset().top) { ...

Global site tag (gtag.js) - Google Analytics