<script language="javascript">
//数字比较函数,因为JS的数字比较,32没有4大,很郁闷的说,特意做个处理
function compareIntegers(vNum1, vNum2) {
var iNum1 = parseInt(vNum1);
var iNum2 = parseInt(vNum2);
if(iNum1 < iNum2) {
return -1;
} else if(iNum1 > iNum2) {
return 1;
} else {
return 0;
}
}
//var arr = [3, 32, 2, 35, 43, 54, 15];
//arr.sort(compareIntegers);
//alert(arr.toString());
//转换函数,主要是将传递进来的字符串,转换成相应的类型变量
function convert(sValue, sDataType) {
if(typeof(sDataType) != 'undefined') {
var type = sDataType.toLowerCase();
}
switch(type) {
case "int":
return parseInt(sValue);
case "float":
return parseFloat(sValue);
case "date":
return new Date(Date.parse(sValue));
default:
return sValue.toString();
}
}
//比较单元格的数值大小
function generateCcompareTRs(iCol, sDataType) {
return function compareTRs(oTR1, oTR2) {
var sValue1 = convert(oTR1.cells[iCol].firstChild.nodeValue, sDataType);
var sValue2 = convert(oTR2.cells[iCol].firstChild.nodeValue, sDataType);
if(sValue1 < sValue2) {
return -1;
} else if(sValue1 > sValue2) {
return 1;
} else {
return 0;
}
};
}
//表格排序
function sortTable(sTableID, iCol, sDataType) {
var oTable = document.getElementById(sTableID);
var oTBody = oTable.tBodies[0];
var colDataRows = oTBody.rows;
var aTRs = new Array;
for(var i=0; i<colDataRows.length; i++) {
aTRs.push(colDataRows[i]);
}
if(oTable.sortCol == iCol) {
aTRs.reverse();
} else {
aTRs.sort(generateCcompareTRs(iCol, sDataType));
}
//创建一个文档碎片,将所有的TR元素添加进去,并将他们从原来的表格中删除
//碎片的子节点被放回到TBODY元素中,当使用appendChild并传递一个文档碎片的时候
//最后添加的是碎片的所有子节点,并不是碎片本身
var oFragment = document.createDocumentFragment();
for(var i=0; i<aTRs.length; i++) {
oFragment.appendChild(aTRs[i]);
}
oTBody.appendChild(oFragment);
oTable.sortCol = iCol;
}
</script>
表格代码如下:
<table border="1" id="tblSort">
<thead>
<tr>
<th onclick="sortTable('tblSort', 0)" style="cursor:pointer">
Last Name
</th>
<th onclick="sortTable('tblSort', 1)" style="cursor:pointer">
First Name
</th>
<th onclick="sortTable('tblSort', 2, 'date')" style="cursor:pointer">
Birthday
</th>
<th onclick="sortTable('tblSort', 3, 'int')" style="cursor:pointer">
Siblings
</th>
</tr>
</thead>
<tbody>
<tr>
<td>Smith</td>
<td>John</td>
<td>7/12/1978</td>
<td>2</td>
</tr>
<tr>
<td>Johnson</td>
<td>Betty</td>
<td>10/15/1977</td>
<td>4</td>
</tr>
<tr>
<td>Henderson</td>
<td>Nathan</td>
<td>2/25/1980</td>
<td>1</td>
</tr>
<tr>
<td>Williams</td>
<td>James</td>
<td>7/8/1973</td>
<td>5</td>
</tr>
<tr>
<td>Gilliam</td>
<td>Michael</td>
<td>7/22/1948</td>
<td>1</td>
</tr>
<tr>
<td>Walker</td>
<td>Matthew</td>
<td>1/14/2000</td>
<td>3</td>
</tr>
</tbody>
</table>
分享到:
相关推荐
这次的例子,只是把Nicholas C .Zakas的例子理解了一下,代码是在学习表格排序时的Demo. 单个数据类型的排序比较简单,他这个例子的特别之处在于能兼容多种数据类型的排序。例子 很简单,但 排序的主方法,有三个...
本资源“Table表格排序显示jQuery代码.zip”包含了一个使用jQuery实现的表格排序功能,这对于数据展示和用户交互至关重要。下面将详细解释这个项目中涉及的关键知识点。 1. **jQuery基础**: jQuery的核心是选择器...
这份“十几万字前端学习笔记.pdf”文件中的内容,涵盖了前端开发的核心知识点,主要围绕HTML、CSS、JavaScript等基础技术,以及现代前端技术栈中的工具和框架,如Vue.js和Webpack。此外,还涉及了一些前端工程实践...
Grid组件是一种强大的数据展示工具,能够以表格的形式呈现数据集合,支持排序、分页、筛选等功能,非常适合展示大量结构化数据。 #### 实例分析 同样,在`function test123()`中,我们看到了Grid组件的创建和配置...
3. **表格排序**:表格的排序功能通常是通过JavaScript事件监听实现的。用户点击列头时,JS会捕获这个事件,根据用户选择的排序方式(升序或降序)对数据进行排序,然后更新表格。排序可能基于服务器返回的数据,也...
这个学习笔记主要围绕“jqGrid学习笔记1”展开,内容来源于jqGrid的英文PDF文档,结合了源码解析和实用工具的介绍。 首先,jqGrid支持多种数据源,包括JSON、XML、HTML、CSV等,这使得它能灵活地与各种后端服务进行...
《jQuery动态表格数据分页检索排序代码》 在网页开发中,动态表格数据的分页、检索和排序功能是常见的需求,特别是在数据量较大的情况下,为了提高用户体验,这些功能尤为重要。jQuery作为一个轻量级的JavaScript库...
**jQuery学习笔记 jQuery API** jQuery,作为一款广泛使用的JavaScript库,极大地简化了DOM操作、事件处理、动画制作和Ajax交互。本笔记旨在帮助开发者快速上手并深入理解jQuery的核心概念和API。 ### 1. jQuery...
3. **表格组件**:`datagrid`(数据网格)提供了数据的展示、排序、分页等功能,可以结合后台进行数据交互。 4. **菜单组件**:包括`menu`(菜单)、`menubutton`(菜单按钮),用于构建应用程序的导航结构。 5. **...
在实际应用中,还可以结合JavaScript插件,如DataTables,进一步增强表格的功能,如排序、搜索和分页等。 总之,Bootstrap3的表格设计考虑了现代Web开发的需求,提供了丰富的样式选择,使开发者能够快速创建出符合...
在本篇JQueryEasyUI的学习笔记中,我们将深入探讨如何利用这个强大的JavaScript库来实现一些常见的数据操作功能,包括批量删除、行内编辑以及自定义编辑器方法。JQueryEasyUI是一个基于jQuery的UI框架,它提供了一...
以下是对EXT学习笔记中涉及的关键知识点的详细说明: 1. **EXT Form**: EXT中的表单组件是构建用户交互界面的重要部分。它们允许用户输入数据并将其提交到服务器。EXT Form支持多种字段类型,如文本框、选择框、...
### Angular学习笔记 #### 1. 验证电子邮件地址 在Angular中,可以使用表单验证功能来检查用户输入的电子邮件地址是否有效。例如,在模板中可以添加一个`<span>`标签,用于显示错误消息,如果电子邮件格式不正确,...
在本篇学习笔记中,我们将深入探讨EXTJS中最基本的Grid的构建和配置。 首先,EXTJS的Grid由多个组件构成,其中最重要的是`ColumnModel`,它负责定义Grid中的列属性。在示例代码中,我们创建了一个`ColumnModel`对象...
开发者可以通过研究这些文件,学习如何结合Bootstrap和其他技术来创建自己的响应式表格。 总结来说,响应式表格是利用Bootstrap等框架和工具,为适应不同设备和屏幕尺寸而设计的数据展示方式。这种技术不仅提高了...
- **数据筛选与排序**:在表格或列表中,用户筛选或排序数据时,Ajax可以快速更新显示结果。 ### 4. jQuery和Ajax库 为了简化Ajax的使用,许多库如jQuery提供了更友好的API。例如,使用jQuery的$.ajax()、$.get()...
### ExtJS 学习笔记概览 #### 一、ExtJS 入门 **1.1 ExtJS 构成及如何引用** ExtJS 是一款基于 JavaScript 的开源框架,专为 Web 应用程序的前端界面设计。其核心优势在于提供了一套丰富的 UI 组件和强大的数据...
`datagrid` 是 EasyUI 提供的一个核心组件,它用于展示表格数据,并提供了丰富的功能,如排序、分页、过滤、编辑等。在源码中,`datagrid` 的实现涉及到多个 JavaScript 文件和 CSS 样式表,这些文件共同协作来提供...
无序列表`<li>`以项目符号表示,有序列表则使用数字或字母排序,自定义列表通常用于定义术语和解释。 4. 图片标签`<img>`:引入图像,通过`src`属性指定图像路径,可设置宽度`width`、高度`height`、标题`title`...
EXT 4.0 是一款流行的JavaScript库,专门用于构建富...EXT 4.0提供了丰富的API文档,允许开发者深入学习并自定义更多功能,如分页、筛选、编辑等。对于初学者来说,了解和实践这些基本概念是掌握EXT 4.0的第一步。