首页 web前端 js教程 js表格排序实例详解(支持int,float,date,string四种数据类型)

js表格排序实例详解(支持int,float,date,string四种数据类型)

Jul 04, 2017 pm 03:17 PM
javascript 支持 详解

这篇文章主要介绍了js表格排序实例分析(支持int,float,date,string四种数据类型),涉及javascript常用的升序、降序及数据类型转换等相关技巧,需要的朋友可以参考下

本文实例讲述了js表格排序的方法。分享给大家供大家参考。具体如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

<html>

<head>

<title>SortTable2</title>

<meta http-equiv="content-type" content="text/html; charset=UTF-8">

<script type="text/javascript">

var k=0;

/**//**************************************************************************

排序的主方法,有三个形参,STableTd,iCol,sDataType分别为需要排序的表格ID,

需要排序的表格列号,所在列的数据类型(支持int,float,date,string四种数据类型)

**************************************************************************/

function sortTable(sTableId,iCol,sDataType)

{

  var oTable=document.getElementById(sTableId);//获取表格的ID

  var oTbody=oTable.tBodies[0]; //获取表格的tbody

  var colDataRows=oTbody.rows; //获取tbody里的所有行的引用

 

  var aTRs=new Array(); //定义aTRs数组用于存放tbody里的行

  for(var i=0;i<colDataRows.length;i++) //依次把所有行放如aTRs数组

  {

    aTRs.push(colDataRows[i]);

  }

  /**//***********************************************************************

  sortCol属性是额外给table添加的属性,用于作顺反两种顺序排序时的判断,区分

  首次排序和后面的有序反转

  ************************************************************************/

  if(oTable.sortCol==iCol) //非首次排序

  {

    aTRs.reverse();

  }

  else  //首次排序

  {

    if(k%2==0) //升序

    {

      aTRs.sort(generateCompareTRs(iCol,sDataType));

    }

    else if(k%2==1) //降序

    {

      aTRs.sort(generateCompareTRs1(iCol,sDataType));

    }

  }

  var oFragment=document.createDocumentFragment();  //创建文档碎片

  for(var i=0;i<aTRs.length;i++)  //把排序过的aTRs数组成员依次添加到文档碎片

  {

    oFragment.appendChild(aTRs[i]);

  }

  oTbody.appendChild(oFragment); //把文档碎片添加到tbody,完成排序后的显示更新

  oTable.sortCol=iCol;  //把当前列号赋值给sortCol,以此来区分首次排序和非首次排序,//sortCol的默认值为-1

};

 

//比较函数,用于两项之间的排序

//升序

function generateCompareTRs(iCol,sDataType)

{

  return  function compareTRs(oTR1,oTR2)

  {

    var vValue1=convert(oTR1.cells[iCol].firstChild.nodeValue,sDataType);

    var vValue2=convert(oTR2.cells[iCol].firstChild.nodeValue,sDataType);

    if(vValue1<vValue2)

    {

      return -1;

    }

    else if(vValue1>vValue2)

    {

      return 1;

    }

    else

    {

      return 0;

    }

  };

};

//降序

function generateCompareTRs1(iCol,sDataType)

{

  return  function compareTRs(oTR1,oTR2)

  {

    var vValue1=convert(oTR1.cells[iCol].firstChild.nodeValue,sDataType);

    var vValue2=convert(oTR2.cells[iCol].firstChild.nodeValue,sDataType);

    if(vValue1>vValue2)

    {

      return -1;

    }

    else if(vValue1<vValue2)

    {

      return 1;

    }

    else

    {

      return 0;

    }

  };

};

//数据类型转换函数

function convert(sValue,sDataType)

{

  switch(sDataType)

  {

    case "int":return parseInt(sValue);

    case "float": return parseFloat(sValue);

    case "date":return new Date(Date.parse(sValue));

    default:return sValue.toString();

  }

};

</script>

</head>

<body>

<form name="f1" id="f1" action="" method="post">

<table border="1" id="tblSort" sortCol="-1">

<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">Silbings</th>

 </tr>

</thead>

<tbody>

 <tr>

  <td>Simth</td>

  <td>John</td>

  <td>7/12/1978</td>

  <td>50nGy/h</td>

 </tr>

 <tr>

  <td>Johnson</td>

  <td>Betty</td>

  <td>5/12/1965</td>

  <td>20nGy/h</td>

 </tr>

 <tr>

  <td>Henderson</td>

  <td>Nathan</td>

  <td>10/15/1977</td>

  <td>130nGy/h</td>

 </tr>

 <tr>

  <td>Willianms</td>

  <td>James</td>

  <td>2/25/1949</td>

  <td>10nGy/h</td>

 </tr>

 <tr>

  <td>Gilliam</td>

  <td>Michael</td>

  <td>7/8/1980</td>

  <td>140nGy/h</td>

 </tr>

 <tr>

  <td>Walker</td>

  <td>Matthew</td>

  <td>6/18/1981</td>

  <td>103nGy/h</td>

 </tr>

</tbody>  

</table>

</form>

</body>

</html>

登录后复制

以上是js表格排序实例详解(支持int,float,date,string四种数据类型)的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

两个点博物馆:邦格荒地地点指南
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

两个点博物馆:邦格荒地地点指南
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Win11管理员权限获取详解 Win11管理员权限获取详解 Mar 08, 2024 pm 03:06 PM

Win11管理员权限获取详解

Oracle SQL中的除法运算详解 Oracle SQL中的除法运算详解 Mar 10, 2024 am 09:51 AM

Oracle SQL中的除法运算详解

PyCharm社区版支持的插件足够吗? PyCharm社区版支持的插件足够吗? Feb 20, 2024 pm 04:42 PM

PyCharm社区版支持的插件足够吗?

优缺点分析:深入了解开源软件的利弊 优缺点分析:深入了解开源软件的利弊 Feb 23, 2024 pm 11:00 PM

优缺点分析:深入了解开源软件的利弊

PHP模运算符的作用及用法详解 PHP模运算符的作用及用法详解 Mar 19, 2024 pm 04:33 PM

PHP模运算符的作用及用法详解

linux系统调用system()函数详解 linux系统调用system()函数详解 Feb 22, 2024 pm 08:21 PM

linux系统调用system()函数详解

Linux的curl命令详解 Linux的curl命令详解 Feb 21, 2024 pm 10:33 PM

Linux的curl命令详解

详细解析C语言学习路线 详细解析C语言学习路线 Feb 18, 2024 am 10:38 AM

详细解析C语言学习路线

See all articles