⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 表格排序.htm

📁 === === === === JavaScript经典源代码收集
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<LINK href="http://www.brainjar.com/common/default.css" type=text/css rel=stylesheet><STYLE type=text/css>TABLE {        BORDER-RIGHT: #000000 2px solid; BORDER-TOP: #000000 2px solid; BORDER-LEFT: #000000 2px solid; BORDER-BOTTOM: #000000 2px solid; border-spacing: 0px; cell-spacing: 0px}TD {        PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; FONT-SIZE: 10pt; PADDING-BOTTOM: 2px; PADDING-TOP: 2px; FONT-FAMILY: Arial, Helvetica, sans-serif; WHITE-SPACE: nowrap}TH {        PADDING-RIGHT: 0.5em; PADDING-LEFT: 0.5em; FONT-SIZE: 10pt; PADDING-BOTTOM: 2px; PADDING-TOP: 2px; FONT-FAMILY: Arial, Helvetica, sans-serif; WHITE-SPACE: nowrap}TD.numeric {        TEXT-ALIGN: right}TH {        BACKGROUND-COLOR: #c0c0c0}TH.mainHeader {        COLOR: #ffffff; BACKGROUND-COLOR: #808080; TEXT-ALIGN: left}TH A {        COLOR: #000080; TEXT-DECORATION: none}TH A:visited {        COLOR: #000080}TH A:active {        COLOR: #800000; TEXT-DECORATION: underline}TH A:hover {        COLOR: #800000; TEXT-DECORATION: underline}TR.alternateRow {        BACKGROUND-COLOR: #e0e0e0}TD.sortedColumn {        BACKGROUND-COLOR: #f0f0f0}TH.sortedColumn {        BACKGROUND-COLOR: #b0b0b0}TR.alternateRow TD.sortedColumn {        BACKGROUND-COLOR: #d0d0d0}</STYLE><SCRIPT type=text/javascript>//-----------------------------------------------------------------------------// sortTable(id, col, rev)////  id  - ID of the TABLE, TBODY, THEAD or TFOOT element to be sorted.//  col - Index of the column to sort, 0 = first column, 1 = second column,//        etc.//  rev - If true, the column is sorted in reverse (descending) order//        initially.//// Note: the team name column (index 1) is used as a secondary sort column and// always sorted in ascending order.//-----------------------------------------------------------------------------function sortTable(id, col, rev) {  // Get the table or table section to sort.  var tblEl = document.getElementById(id);  // The first time this function is called for a given table, set up an  // array of reverse sort flags.  if (tblEl.reverseSort == null) {    tblEl.reverseSort = new Array();    // Also, assume the team name column is initially sorted.    tblEl.lastColumn = 1;  }  // If this column has not been sorted before, set the initial sort direction.  if (tblEl.reverseSort[col] == null)    tblEl.reverseSort[col] = rev;  // If this column was the last one sorted, reverse its sort direction.  if (col == tblEl.lastColumn)    tblEl.reverseSort[col] = !tblEl.reverseSort[col];  // Remember this column as the last one sorted.  tblEl.lastColumn = col;  // Set the table display style to "none" - necessary for Netscape 6   // browsers.  var oldDsply = tblEl.style.display;  tblEl.style.display = "none";  // Sort the rows based on the content of the specified column using a  // selection sort.  var tmpEl;  var i, j;  var minVal, minIdx;  var testVal;  var cmp;  for (i = 0; i < tblEl.rows.length - 1; i++) {    // Assume the current row has the minimum value.    minIdx = i;    minVal = getTextValue(tblEl.rows[i].cells[col]);    // Search the rows that follow the current one for a smaller value.    for (j = i + 1; j < tblEl.rows.length; j++) {      testVal = getTextValue(tblEl.rows[j].cells[col]);      cmp = compareValues(minVal, testVal);      // Negate the comparison result if the reverse sort flag is set.      if (tblEl.reverseSort[col])        cmp = -cmp;      // Sort by the second column (team name) if those values are equal.      if (cmp == 0 && col != 1)        cmp = compareValues(getTextValue(tblEl.rows[minIdx].cells[1]),                            getTextValue(tblEl.rows[j].cells[1]));      // If this row has a smaller value than the current minimum, remember its      // position and update the current minimum value.      if (cmp > 0) {        minIdx = j;        minVal = testVal;      }    }    // By now, we have the row with the smallest value. Remove it from the    // table and insert it before the current row.    if (minIdx > i) {      tmpEl = tblEl.removeChild(tblEl.rows[minIdx]);      tblEl.insertBefore(tmpEl, tblEl.rows[i]);    }  }  // Make it look pretty.  makePretty(tblEl, col);  // Set team rankings.  setRanks(tblEl, col, rev);  // Restore the table's display style.  tblEl.style.display = oldDsply;  return false;}//-----------------------------------------------------------------------------// Functions to get and compare values during a sort.//-----------------------------------------------------------------------------// This code is necessary for browsers that don't reflect the DOM constants// (like IE).if (document.ELEMENT_NODE == null) {  document.ELEMENT_NODE = 1;  document.TEXT_NODE = 3;}function getTextValue(el) {  var i;  var s;  // Find and concatenate the values of all text nodes contained within the  // element.  s = "";  for (i = 0; i < el.childNodes.length; i++)    if (el.childNodes[i].nodeType == document.TEXT_NODE)      s += el.childNodes[i].nodeValue;    else if (el.childNodes[i].nodeType == document.ELEMENT_NODE &&             el.childNodes[i].tagName == "BR")      s += " ";    else      // Use recursion to get text within sub-elements.      s += getTextValue(el.childNodes[i]);  return normalizeString(s);}function compareValues(v1, v2) {  var f1, f2;  // If the values are numeric, convert them to floats.  f1 = parseFloat(v1);  f2 = parseFloat(v2);  if (!isNaN(f1) && !isNaN(f2)) {    v1 = f1;    v2 = f2;  }  // Compare the two values.  if (v1 == v2)    return 0;  if (v1 > v2)    return 1  return -1;}// Regular expressions for normalizing white space.var whtSpEnds = new RegExp("^\\s*|\\s*$", "g");var whtSpMult = new RegExp("\\s\\s+", "g");function normalizeString(s) {  s = s.replace(whtSpMult, " ");  // Collapse any multiple whites space.  s = s.replace(whtSpEnds, "");   // Remove leading or trailing white space.  return s;}//-----------------------------------------------------------------------------// Functions to update the table appearance after a sort.//-----------------------------------------------------------------------------// Style class names.var rowClsNm = "alternateRow";var colClsNm = "sortedColumn";// Regular expressions for setting class names.var rowTest = new RegExp(rowClsNm, "gi");var colTest = new RegExp(colClsNm, "gi");function makePretty(tblEl, col) {  var i, j;  var rowEl, cellEl;  // Set style classes on each row to alternate their appearance.  for (i = 0; i < tblEl.rows.length; i++) {   rowEl = tblEl.rows[i];   rowEl.className = rowEl.className.replace(rowTest, "");    if (i % 2 != 0)      rowEl.className += " " + rowClsNm;    rowEl.className = normalizeString(rowEl.className);    // Set style classes on each column (other than the name column) to    // highlight the one that was sorted.    for (j = 2; j < tblEl.rows[i].cells.length; j++) {      cellEl = rowEl.cells[j];      cellEl.className = cellEl.className.replace(colTest, "");      if (j == col)        cellEl.className += " " + colClsNm;      cellEl.className = normalizeString(cellEl.className);    }  }  // Find the table header and highlight the column that was sorted.  var el = tblEl.parentNode.tHead;  rowEl = el.rows[el.rows.length - 1];  // Set style classes for each column as above.  for (i = 2; i < rowEl.cells.length; i++) {    cellEl = rowEl.cells[i];    cellEl.className = cellEl.className.replace(colTest, "");    // Highlight the header of the sorted column.    if (i == col)      cellEl.className += " " + colClsNm;      cellEl.className = normalizeString(cellEl.className);  }}function setRanks(tblEl, col, rev) {  // Determine whether to start at the top row of the table and go down or  // at the bottom row and work up. This is based on the current sort  // direction of the column and its reversed flag.  var i    = 0;  var incr = 1;  if (tblEl.reverseSort[col])    rev = !rev;  if (rev) {    incr = -1;    i = tblEl.rows.length - 1;  }  // Now go through each row in that direction and assign it a rank by  // counting 1, 2, 3...  var count   = 1;  var rank    = count;  var curVal;  var lastVal = null;  // Note that this loop is skipped if the table was sorted on the name  // column.  while (col > 1 && i >= 0 && i < tblEl.rows.length) {    // Get the value of the sort column in this row.    curVal = getTextValue(tblEl.rows[i].cells[col]);    // On rows after the first, compare the sort value of this row to the    // previous one. If they differ, update the rank to match the current row    // count. (If they are the same, this row will get the same rank as the    // previous one.)    if (lastVal != null && compareValues(curVal, lastVal) != 0)        rank = count;    // Set the rank for this row.    tblEl.rows[i].rank = rank;    // Save the sort value of the current row for the next time around and bump    // the row counter and index.    lastVal = curVal;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -