亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > JavaScript > 正文

JavaScript實現表格點擊排序的方法

2024-05-06 16:19:56
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了JavaScript實現表格點擊排序的方法,可實現點擊頂部數據項標題實現對應數據列的排序效果,涉及javascript鼠標事件及數據排序的技巧,需要的朋友可以參考下

本文實例講述了JavaScript實現表格點擊排序的方法。分享給大家供大家參考。具體分析如下:

這里實現基于JS的表格點擊排序效果,可以根據表格內的數據大小自動按順序排列,股票網站常會見到這種功能。

 

 
  1. <html> 
  2. <head> 
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"
  4. <title>表格排序</title> 
  5. </head> 
  6. <STYLE type=text/css>TABLE { 
  7. BORDER-RIGHT: #000000 2px solid; BORDER-TOP: #000000 2px solid; 
  8. BORDER-LEFT: #000000 2px solid; BORDER-BOTTOM: #000000 2px solid; 
  9. border-spacing: 0px; cell-spacing: 0px 
  10. TD { 
  11. PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; FONT-SIZE: 10pt; 
  12. PADDING-BOTTOM: 2px; PADDING-TOP: 2px;  
  13. FONT-FAMILY: Arial, Helvetica, sans-serif; WHITE-SPACE: nowrap 
  14. TH { 
  15. PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; FONT-SIZE: 10pt; 
  16. PADDING-BOTTOM: 2px; PADDING-TOP: 2px; 
  17. FONT-FAMILY: Arial, Helvetica, sans-serif; WHITE-SPACE: nowrap 
  18. TD.numeric { 
  19. TEXT-ALIGN: right 
  20. TH { 
  21. BACKGROUND-COLOR: #c0c0c0 
  22. TH.mainHeader { 
  23. COLOR: #ffffff; BACKGROUND-COLOR: #808080; TEXT-ALIGN: left 
  24. TH A { 
  25. COLOR: #000080; TEXT-DECORATION: none 
  26. TH A:visited { 
  27. COLOR: #000080 
  28. TH A:active { 
  29. COLOR: #800000; TEXT-DECORATION: underline 
  30. TH A:hover { 
  31. COLOR: #800000; TEXT-DECORATION: underline 
  32. TR.alternateRow { 
  33. BACKGROUND-COLOR: #e0e0e0 
  34. TD.sortedColumn { 
  35. BACKGROUND-COLOR: #f0f0f0 
  36. TH.sortedColumn { 
  37. BACKGROUND-COLOR: #b0b0b0 
  38. TR.alternateRow TD.sortedColumn { 
  39. BACKGROUND-COLOR: #d0d0d0 
  40. </STYLE> 
  41. <SCRIPT type=text/javascript> 
  42. function sortTable(id, col, rev) { 
  43. var tblEl = document.getElementById(id); 
  44. if (tblEl.reverseSort == null) { 
  45. tblEl.reverseSort = new Array(); 
  46. tblEl.lastColumn = 1; 
  47. if (tblEl.reverseSort[col] == null
  48. tblEl.reverseSort[col] = rev; 
  49. if (col == tblEl.lastColumn) 
  50. tblEl.reverseSort[col] = !tblEl.reverseSort[col]; 
  51. tblEl.lastColumn = col; 
  52. var oldDsply = tblEl.style.display; 
  53. tblEl.style.display = "none"
  54. var tmpEl; 
  55. var i, j; 
  56. var minVal, minIdx; 
  57. var testVal; 
  58. var cmp; 
  59. for (i = 0; i < tblEl.rows.length - 1; i++) { 
  60. minIdx = i; 
  61. minVal = getTextValue(tblEl.rows[i].cells[col]); 
  62. for (j = i + 1; j < tblEl.rows.length; j++) { 
  63. testVal = getTextValue(tblEl.rows[j].cells[col]); 
  64. cmp = compareValues(minVal, testVal); 
  65. if (tblEl.reverseSort[col]) 
  66. cmp = -cmp; 
  67. if (cmp == 0 && col != 1) 
  68. cmp = compareValues(getTextValue(tblEl.rows[minIdx].cells[1]), 
  69. getTextValue(tblEl.rows[j].cells[1])); 
  70. if (cmp > 0) { 
  71. minIdx = j; 
  72. minVal = testVal; 
  73. if (minIdx > i) { 
  74. tmpEl = tblEl.removeChild(tblEl.rows[minIdx]); 
  75. tblEl.insertBefore(tmpEl, tblEl.rows[i]); 
  76. makePretty(tblEl, col); 
  77. setRanks(tblEl, col, rev); 
  78. tblEl.style.display = oldDsply; 
  79. return false
  80. if (document.ELEMENT_NODE == null) { 
  81. document.ELEMENT_NODE = 1; 
  82. document.TEXT_NODE = 3; 
  83. function getTextValue(el) { 
  84. var i; 
  85. var s; 
  86. s = ""
  87. for (i = 0; i < el.childNodes.length; i++) 
  88. if (el.childNodes[i].nodeType == document.TEXT_NODE) 
  89. s += el.childNodes[i].nodeValue; 
  90. else if (el.childNodes[i].nodeType == document.ELEMENT_NODE &&  
  91. el.childNodes[i].tagName == "BR"
  92. s += " "
  93. else 
  94. // Use recursion to get text within sub-elements. 
  95. s += getTextValue(el.childNodes[i]); 
  96. return normalizeString(s); 
  97. function compareValues(v1, v2) { 
  98. var f1, f2; 
  99. f1 = parseFloat(v1); 
  100. f2 = parseFloat(v2); 
  101. if (!isNaN(f1) && !isNaN(f2)) { 
  102. v1 = f1; 
  103. v2 = f2; 
  104. // Compare the two values. 
  105. if (v1 == v2) 
  106. return 0; 
  107. if (v1 > v2) 
  108. return 1 
  109. return -1; 
  110. var whtSpEnds = new RegExp("^//s*|//s*$""g"); 
  111. var whtSpMult = new RegExp("//s//s+""g"); 
  112. function normalizeString(s) { 
  113. s = s.replace(whtSpMult, " "); // Collapse any multiple whites space. 
  114. s = s.replace(whtSpEnds, ""); // Remove leading or trailing white space. 
  115. return s; 
  116. var rowClsNm = "alternateRow"
  117. var colClsNm = "sortedColumn"
  118. var rowTest = new RegExp(rowClsNm, "gi"); 
  119. var colTest = new RegExp(colClsNm, "gi"); 
  120. function makePretty(tblEl, col) { 
  121. var i, j; 
  122. var rowEl, cellEl; 
  123. for (i = 0; i < tblEl.rows.length; i++) { 
  124. rowEl = tblEl.rows[i]; 
  125. rowEl.className = rowEl.className.replace(rowTest, ""); 
  126. if (i % 2 != 0) 
  127. rowEl.className += " " + rowClsNm; 
  128. rowEl.className = normalizeString(rowEl.className); 
  129. for (j = 2; j < tblEl.rows[i].cells.length; j++) { 
  130. cellEl = rowEl.cells[j]; 
  131. cellEl.className = cellEl.className.replace(colTest, ""); 
  132. if (j == col) 
  133. cellEl.className += " " + colClsNm; 
  134. cellEl.className = normalizeString(cellEl.className); 
  135. var el = tblEl.parentNode.tHead; 
  136. rowEl = el.rows[el.rows.length - 1]; 
  137. for (i = 2; i < rowEl.cells.length; i++) { 
  138. cellEl = rowEl.cells[i]; 
  139. cellEl.className = cellEl.className.replace(colTest, ""); 
  140. if (i == col) 
  141. cellEl.className += " " + colClsNm; 
  142. cellEl.className = normalizeString(cellEl.className); 
  143. function setRanks(tblEl, col, rev) { 
  144. var i = 0; 
  145. var incr = 1; 
  146. if (tblEl.reverseSort[col]) 
  147. rev = !rev; 
  148. if (rev) { 
  149. incr = -1; 
  150. i = tblEl.rows.length - 1; 
  151. var count = 1; 
  152. var rank = count; 
  153. var curVal; 
  154. var lastVal = null
  155. while (col > 1 && i >= 0 && i < tblEl.rows.length) { 
  156. curVal = getTextValue(tblEl.rows[i].cells[col]); 
  157. if (lastVal != null && compareValues(curVal, lastVal) != 0) 
  158. rank = count; 
  159. tblEl.rows[i].rank = rank; 
  160. lastVal = curVal; 
  161. count++; 
  162. i += incr; 
  163. var rowEl, cellEl; 
  164. var lastRank = 0; 
  165. for (i = 0; i < tblEl.rows.length; i++) { 
  166. rowEl = tblEl.rows[i]; 
  167. cellEl = rowEl.cells[0]; 
  168. while (cellEl.lastChild != null
  169. cellEl.removeChild(cellEl.lastChild); 
  170. if (col > 1 && rowEl.rank != lastRank) { 
  171. cellEl.appendChild(document.createTextNode(rowEl.rank)); 
  172. lastRank = rowEl.rank; 
  173. </SCRIPT> 
  174. </HEAD> 
  175. <BODY> 
  176. <!-- Offensive statistics table. --> 
  177. <TABLE cellSpacing=0 cellPadding=0 border=0> 
  178. <THEAD> 
  179. <TR> 
  180. <TH class=mainHeader colSpan=11>NFL 2001 Offensive Stats</TH></TR> 
  181. <TR> 
  182. <TH style="TEXT-ALIGN: left">Rank</TH> 
  183. <TH style="TEXT-ALIGN: left"><A title="Team Name" 
  184. onclick="this.blur(); return sortTable('offTblBdy', 1, false);" 
  185. href="#">Team</A></TH> 
  186. <TH><SPAN title="Games Played">Gms</SPAN></TH> 
  187. <TH><A title="Total Yards" 
  188. onclick="this.blur(); return sortTable('offTblBdy', 3, true);" 
  189. href="#">Yds</A></TH> 
  190. <TH><A title="Yards Per Game" 
  191. onclick="this.blur(); return sortTable('offTblBdy', 4, true);" 
  192. href="#">Yds/G</A></TH> 
  193. <TH><A title="Total Rushing Yards" 
  194. onclick="this.blur(); return sortTable('offTblBdy', 5, true);" 
  195. href="#">RuYds</A></TH> 
  196. <TH><A title="Rushing Yards Per Game" 
  197. onclick="this.blur(); return sortTable('offTblBdy', 6, true);" 
  198. href="#">RuYds/G</A></TH> 
  199. <TH><A title="Total Passing Yards" 
  200. onclick="this.blur(); return sortTable('offTblBdy', 7, true);" 
  201. href="#">PaYds</A></TH> 
  202. <TH><A title="Passing Yards Per Game" 
  203. onclick="this.blur(); return sortTable('offTblBdy', 8, true);" 
  204. href="#">PaYds/G</A></TH> 
  205. <TH><A title="Total Points Scored" 
  206. onclick="this.blur(); return sortTable('offTblBdy', 9, true);" 
  207. href="#">Pts</A></TH> 
  208. <TH><A title="Points Per Game" 
  209. onclick="this.blur(); return sortTable('offTblBdy', 10, true);" 
  210. href="#">Pts/G</A></TH></TR></THEAD> 
  211. <TBODY id=offTblBdy> 
  212. <TR> 
  213. <TD class=numeric></TD> 
  214. <TD>Arizona</TD> 
  215. <TD class=numeric>16</TD> 
  216. <TD class=numeric>4898</TD> 
  217. <TD class=numeric>306.1</TD> 
  218. <TD class=numeric>1449</TD> 
  219. <TD class=numeric>90.6</TD> 
  220. <TD class=numeric>3449</TD> 
  221. <TD class=numeric>215.6</TD> 
  222. <TD class=numeric>295</TD> 
  223. <TD class=numeric>18.4</TD></TR> 
  224. <TR class=alternateRow> 
  225. <TD class=numeric></TD> 
  226. <TD>Atlanta</TD> 
  227. <TD class=numeric>16</TD> 
  228. <TD class=numeric>5070</TD> 
  229. <TD class=numeric>316.9</TD> 
  230. <TD class=numeric>1773</TD> 
  231. <TD class=numeric>110.8</TD> 
  232. <TD class=numeric>3297</TD> 
  233.  
  234. <TD class=numeric>206.1</TD> 
  235. <TD class=numeric>291</TD> 
  236. <TD class=numeric>18.2</TD></TR> 
  237. <TR> 
  238. <TD class=numeric></TD> 
  239. <TD>Detroit</TD> 
  240. <TD class=numeric>16</TD> 
  241. <TD class=numeric>4994</TD> 
  242. <TD class=numeric>312.1</TD> 
  243. <TD class=numeric>1398</TD> 
  244. <TD class=numeric>87.4</TD> 
  245. <TD class=numeric>3596</TD> 
  246. <TD class=numeric>224.8</TD> 
  247. <TD class=numeric>270</TD> 
  248. <TD class=numeric>16.9</TD></TR> 
  249. <TR class=alternateRow> 
  250. <TD class=numeric></TD> 
  251. <TD>Jacksonville</TD> 
  252. <TD class=numeric>16</TD> 
  253. <TD class=numeric>4840</TD> 
  254. <TD class=numeric>302.5</TD> 
  255. <TD class=numeric>1600</TD> 
  256. <TD class=numeric>100.0</TD> 
  257. <TD class=numeric>3240</TD> 
  258. <TD class=numeric>202.5</TD> 
  259. <TD class=numeric>294</TD> 
  260. <TD class=numeric>18.4</TD></TR> 
  261. <TR> 
  262. <TD class=numeric></TD> 
  263. <TD>Kansas City</TD> 
  264. <TD class=numeric>16</TD> 
  265. <TD class=numeric>5673</TD> 
  266. <TD class=numeric>354.6</TD> 
  267. <TD class=numeric>2008</TD> 
  268. <TD class=numeric>125.5</TD> 
  269. <TD class=numeric>3665</TD> 
  270. <TD class=numeric>229.1</TD> 
  271. <TD class=numeric>320</TD> 
  272. <TD class=numeric>20.0</TD></TR> 
  273. <TR class=alternateRow> 
  274. <TD class=numeric></TD> 
  275. <TD>Miami</TD> 
  276. <TD class=numeric>16</TD> 
  277. <TD class=numeric>4821</TD> 
  278. <TD class=numeric>301.3</TD> 
  279. <TD class=numeric>1664</TD> 
  280. <TD class=numeric>104.0</TD> 
  281. <TD class=numeric>3157</TD> 
  282. <TD class=numeric>197.3</TD> 
  283. <TD class=numeric>344</TD> 
  284. <TD class=numeric>21.5</TD></TR> 
  285. <TR> 
  286. <TD class=numeric></TD> 
  287. <TD>Minnesota</TD> 
  288. <TD class=numeric>16</TD> 
  289. <TD class=numeric>5006</TD> 
  290. <TD class=numeric>333.7</TD> 
  291. <TD class=numeric>1523</TD> 
  292. <TD class=numeric>101.5</TD> 
  293. <TD class=numeric>3483</TD> 
  294. <TD class=numeric>232.2</TD> 
  295. <TD class=numeric>287</TD> 
  296. <TD class=numeric>19.1</TD></TR> 
  297. <TR class=alternateRow> 
  298. <TD class=numeric></TD> 
  299. <TD>New England</TD> 
  300. <TD class=numeric>16</TD> 
  301. <TD class=numeric>4882</TD> 
  302. <TD class=numeric>305.1</TD> 
  303. <TD class=numeric>1793</TD> 
  304. <TD class=numeric>112.1</TD> 
  305. <TD class=numeric>3089</TD> 
  306. <TD class=numeric>193.1</TD> 
  307. <TD class=numeric>371</TD> 
  308. <TD class=numeric>23.2</TD></TR> 
  309. <TR> 
  310. <TD class=numeric></TD> 
  311. <TD>New Orleans</TD> 
  312. <TD class=numeric>16</TD> 
  313. <TD class=numeric>5226</TD> 
  314. <TD class=numeric>326.6</TD> 
  315. <TD class=numeric>1712</TD> 
  316. <TD class=numeric>107.0</TD> 
  317. <TD class=numeric>3514</TD> 
  318. <TD class=numeric>219.6</TD> 
  319. <TD class=numeric>333</TD> 
  320. <TD class=numeric>20.8</TD></TR> 
  321. <TR class=alternateRow> 
  322. <TD class=numeric></TD> 
  323. <TD>New York Giants</TD> 
  324. <TD class=numeric>16</TD> 
  325. <TD class=numeric>5335</TD> 
  326. <TD class=numeric>333.4</TD> 
  327. <TD class=numeric>1777</TD> 
  328. <TD class=numeric>111.1</TD> 
  329. <TD class=numeric>3558</TD> 
  330. <TD class=numeric>222.4</TD> 
  331. <TD class=numeric>294</TD> 
  332. <TD class=numeric>18.4</TD></TR> 
  333. </TBODY></TABLE> 
  334. </BODY> 
  335. </HTML> 

希望本文所述對大家的javascript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久久久av| 欧美精品激情blacked18| 日本国产一区二区三区| 国产一区二区三区日韩欧美| 午夜精品福利在线观看| 久久精彩免费视频| 久久成人18免费网站| 国外成人免费在线播放| 欧美成人在线影院| 国产经典一区二区| 久久精品91久久香蕉加勒比| 国产91在线视频| 欧美日本精品在线| 欧美在线视频观看免费网站| 97在线视频免费看| 久久精品中文字幕| 国产精品久久久久久久久男| 欧美激情按摩在线| 成人欧美一区二区三区在线| 国产精品扒开腿做爽爽爽的视频| 国产精品视频导航| 亚洲自拍欧美色图| 欧美大片欧美激情性色a∨久久| 中文在线资源观看视频网站免费不卡| 色小说视频一区| 亚洲国产精品美女| 伊人伊成久久人综合网小说| 亚洲欧美日韩中文在线制服| 欧美另类老肥妇| 尤物yw午夜国产精品视频明星| 亚洲国产精彩中文乱码av| 亚洲综合在线中文字幕| 国产精品7m视频| 精品国产成人在线| 亚洲国产精久久久久久| 91精品免费视频| 成人网在线观看| 在线精品国产欧美| 日韩视频欧美视频| 一道本无吗dⅴd在线播放一区| 欧美激情综合色综合啪啪五月| 国产精品日韩一区| 日韩成人性视频| 久久久亚洲精品视频| 成人精品一区二区三区电影免费| 欧美特级www| 亚洲乱码国产乱码精品精天堂| 成人激情视频在线播放| 国产精品一二区| 欧美成人激情视频| 国产日韩欧美视频| 国产一区二区黑人欧美xxxx| 国产精品国产福利国产秒拍| 精品一区精品二区| 欧美成人激情在线| 91精品国产高清久久久久久91| 久久综合免费视频影院| 久久精品中文字幕一区| 亚洲一区二区日本| 亚洲美女在线观看| 午夜精品一区二区三区在线播放| 精品成人久久av| 欧美性色xo影院| 粉嫩av一区二区三区免费野| 欧美中文在线观看国产| 国产精品一区二区久久久久| 国产大片精品免费永久看nba| 菠萝蜜影院一区二区免费| 伊人av综合网| 欧美高清激情视频| 欧美高清在线视频观看不卡| 中文字幕亚洲字幕| 欧美另类极品videosbestfree| 国产精品国内视频| 久久的精品视频| 日韩美女写真福利在线观看| 美女国内精品自产拍在线播放| 欧美成人全部免费| 一本大道久久加勒比香蕉| 国产综合福利在线| 岛国av一区二区三区| 9.1国产丝袜在线观看| 久99九色视频在线观看| 亚洲欧美综合另类中字| 韩剧1988免费观看全集| 日本精品视频在线播放| 欧美精品在线免费观看| 国产手机视频精品| 亚洲国产精品成人va在线观看| 日本三级久久久| 国产91在线高潮白浆在线观看| 亚洲摸下面视频| 亚洲午夜av久久乱码| 国产女人18毛片水18精品| 亚洲国产精品久久91精品| 国产精品2018| 精品国产鲁一鲁一区二区张丽| 午夜精品理论片| 欧美精品久久久久久久久久| 91av在线免费观看| 精品在线欧美视频| 中文字幕亚洲综合久久筱田步美| 亚洲女人天堂视频| 国产91网红主播在线观看| 成人欧美一区二区三区在线湿哒哒| 久久成人精品电影| 亚洲国产91精品在线观看| 亚洲精品一区二区三区不| 日韩欧美成人网| 精品亚洲aⅴ在线观看| 一本色道久久88综合日韩精品| 最近2019中文字幕大全第二页| 日韩av毛片网| 欧美精品久久久久久久久| 97不卡在线视频| 国产热re99久久6国产精品| 久久精品国产亚洲精品2020| 国产欧美在线播放| 国产午夜精品全部视频播放| 中文字幕亚洲综合| 国产色综合天天综合网| 久久久久久国产精品美女| 国产99久久久欧美黑人| 91手机视频在线观看| 久久久久久国产精品久久| 人体精品一二三区| 精品国产一区二区三区四区在线观看| 国产不卡精品视男人的天堂| 欧美日韩国产精品一区二区不卡中文| 日韩精品免费综合视频在线播放| 中文字幕国产亚洲| 亚洲久久久久久久久久| 日韩一级裸体免费视频| 精品一区二区亚洲| 爱福利视频一区| 日本高清+成人网在线观看| 热久久免费视频精品| 欧美精品aaa| 亚洲а∨天堂久久精品喷水| 国产精品美女主播在线观看纯欲| www.欧美三级电影.com| 国产视频观看一区| 日韩亚洲欧美中文高清在线| 成人黄色中文字幕| 欧美精品激情blacked18| 91免费在线视频网站| 久久躁日日躁aaaaxxxx| 国产精品久久久久国产a级| 日韩欧美中文第一页| 久久久精品免费视频| 久久久久久com| 亚洲精品视频免费在线观看| 欧洲亚洲女同hd| 亚洲欧洲午夜一线一品| 亚洲va欧美va国产综合久久| 日韩一区二区三区xxxx| 5566成人精品视频免费| 全亚洲最色的网站在线观看| 亚洲自拍高清视频网站| 中文字幕精品视频| 欧美性感美女h网站在线观看免费| 国产精品va在线播放我和闺蜜| 欧美大片欧美激情性色a∨久久| 亚洲直播在线一区|