`
hackbomb
  • 浏览: 216698 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

javascript学习笔记之表格排序

阅读更多

<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>

分享到:
评论

相关推荐

    JAVASCRIPT学习笔记9-表格排序

    这次的例子,只是把Nicholas C .Zakas的例子理解了一下,代码是在学习表格排序时的Demo. 单个数据类型的排序比较简单,他这个例子的特别之处在于能兼容多种数据类型的排序。例子 很简单,但 排序的主方法,有三个...

    Table表格排序显示jQuery代码.zip

    本资源“Table表格排序显示jQuery代码.zip”包含了一个使用jQuery实现的表格排序功能,这对于数据展示和用户交互至关重要。下面将详细解释这个项目中涉及的关键知识点。 1. **jQuery基础**: jQuery的核心是选择器...

    十几万字前端学习笔记.pdf

    这份“十几万字前端学习笔记.pdf”文件中的内容,涵盖了前端开发的核心知识点,主要围绕HTML、CSS、JavaScript等基础技术,以及现代前端技术栈中的工具和框架,如Vue.js和Webpack。此外,还涉及了一些前端工程实践...

    JavaScript.-Extjs基础学习笔记

    Grid组件是一种强大的数据展示工具,能够以表格的形式呈现数据集合,支持排序、分页、筛选等功能,非常适合展示大量结构化数据。 #### 实例分析 同样,在`function test123()`中,我们看到了Grid组件的创建和配置...

    table表格无刷新翻页排序效果.zip

    3. **表格排序**:表格的排序功能通常是通过JavaScript事件监听实现的。用户点击列头时,JS会捕获这个事件,根据用户选择的排序方式(升序或降序)对数据进行排序,然后更新表格。排序可能基于服务器返回的数据,也...

    jqGrid学习笔记1 - - - - jqGrid英语PDF文档

    这个学习笔记主要围绕“jqGrid学习笔记1”展开,内容来源于jqGrid的英文PDF文档,结合了源码解析和实用工具的介绍。 首先,jqGrid支持多种数据源,包括JSON、XML、HTML、CSV等,这使得它能灵活地与各种后端服务进行...

    jQuery动态表格数据分页检索排序代码.zip

    《jQuery动态表格数据分页检索排序代码》 在网页开发中,动态表格数据的分页、检索和排序功能是常见的需求,特别是在数据量较大的情况下,为了提高用户体验,这些功能尤为重要。jQuery作为一个轻量级的JavaScript库...

    jQuery学习笔记 jQuery API

    **jQuery学习笔记 jQuery API** jQuery,作为一款广泛使用的JavaScript库,极大地简化了DOM操作、事件处理、动画制作和Ajax交互。本笔记旨在帮助开发者快速上手并深入理解jQuery的核心概念和API。 ### 1. jQuery...

    JQuery EasyUI 学习笔记珍藏版

    3. **表格组件**:`datagrid`(数据网格)提供了数据的展示、排序、分页等功能,可以结合后台进行数据交互。 4. **菜单组件**:包括`menu`(菜单)、`menubutton`(菜单按钮),用于构建应用程序的导航结构。 5. **...

    Bootstrap3学习笔记(三)之表格

    在实际应用中,还可以结合JavaScript插件,如DataTables,进一步增强表格的功能,如排序、搜索和分页等。 总之,Bootstrap3的表格设计考虑了现代Web开发的需求,提供了丰富的样式选择,使开发者能够快速创建出符合...

    JQueryEasyUI学习笔记(九)源码

    在本篇JQueryEasyUI的学习笔记中,我们将深入探讨如何利用这个强大的JavaScript库来实现一些常见的数据操作功能,包括批量删除、行内编辑以及自定义编辑器方法。JQueryEasyUI是一个基于jQuery的UI框架,它提供了一...

    十分有用有帮助的EXT学习笔记

    以下是对EXT学习笔记中涉及的关键知识点的详细说明: 1. **EXT Form**: EXT中的表单组件是构建用户交互界面的重要部分。它们允许用户输入数据并将其提交到服务器。EXT Form支持多种字段类型,如文本框、选择框、...

    angular学习笔记

    ### Angular学习笔记 #### 1. 验证电子邮件地址 在Angular中,可以使用表单验证功能来检查用户输入的电子邮件地址是否有效。例如,在模板中可以添加一个`&lt;span&gt;`标签,用于显示错误消息,如果电子邮件格式不正确,...

    extjs 学习笔记(三) 最基本的grid

    在本篇学习笔记中,我们将深入探讨EXTJS中最基本的Grid的构建和配置。 首先,EXTJS的Grid由多个组件构成,其中最重要的是`ColumnModel`,它负责定义Grid中的列属性。在示例代码中,我们创建了一个`ColumnModel`对象...

    响应式表格

    开发者可以通过研究这些文件,学习如何结合Bootstrap和其他技术来创建自己的响应式表格。 总结来说,响应式表格是利用Bootstrap等框架和工具,为适应不同设备和屏幕尺寸而设计的数据展示方式。这种技术不仅提高了...

    ajax学习笔记资料

    - **数据筛选与排序**:在表格或列表中,用户筛选或排序数据时,Ajax可以快速更新显示结果。 ### 4. jQuery和Ajax库 为了简化Ajax的使用,许多库如jQuery提供了更友好的API。例如,使用jQuery的$.ajax()、$.get()...

    老师整理的extjs学习笔记

    ### ExtJS 学习笔记概览 #### 一、ExtJS 入门 **1.1 ExtJS 构成及如何引用** ExtJS 是一款基于 JavaScript 的开源框架,专为 Web 应用程序的前端界面设计。其核心优势在于提供了一套丰富的 UI 组件和强大的数据...

    easyui学习笔记(九)源码

    `datagrid` 是 EasyUI 提供的一个核心组件,它用于展示表格数据,并提供了丰富的功能,如排序、分页、过滤、编辑等。在源码中,`datagrid` 的实现涉及到多个 JavaScript 文件和 CSS 样式表,这些文件共同协作来提供...

    HTML+CSS+JS学习笔记

    无序列表`&lt;li&gt;`以项目符号表示,有序列表则使用数字或字母排序,自定义列表通常用于定义术语和解释。 4. 图片标签`&lt;img&gt;`:引入图像,通过`src`属性指定图像路径,可设置宽度`width`、高度`height`、标题`title`...

    ext 4.0 学习笔记.doc

    EXT 4.0 是一款流行的JavaScript库,专门用于构建富...EXT 4.0提供了丰富的API文档,允许开发者深入学习并自定义更多功能,如分页、筛选、编辑等。对于初学者来说,了解和实践这些基本概念是掌握EXT 4.0的第一步。

Global site tag (gtag.js) - Google Analytics