滚动排序效果


<%@ page language="java" import="java.util.*" contentType="text/html; charset=gb2312" pageEncoding="gb2312"%>

<%@page

import="com.szjz.model.FileBean,javax.faces.context.FacesContext,javax.servlet.http.HttpSession"%>

<%

String path = request.getContextPath();

String basePath = request.getScheme() + "://"

+ request.getServerName() + ":" + request.getServerPort()

+ path + "/";

%>

<SCRIPT language=JavaScript>

///tablesort.js

var dom = (document.getElementsByTagName) ? true : false;

var ie5 = (document.getElementsByTagName && document.all) ? true : false;

var arrowUp, arrowDown;

if (ie5 || dom)

initSortTable();

function initSortTable() {

arrowUp =document.createElement("SPAN");

var tn = document.createTextNode("↓");

arrowUp.appendChild(tn);

arrowUp.className = "arrow";

arrowDown = document.createElement("SPAN");

var tn = document.createTextNode("↑");

arrowDown.appendChild(tn);

arrowDown.className = "arrow";

}

function sortTable(tableNode, nCol, bDesc, sType) {

var tBody =tableNode.tBodies[0];

var trs = tBody.rows;

var a = new Array();

for (var i=0; i<trs.length; i++) {

a[i] =trs[i];

}

a.sort(compareByColumn(nCol,bDesc,sType));

for (var i=0; i<a.length; i++) {

tBody.appendChild(a[i]);

}

}

function CaseInsensitiveString(s) {

return String(s).toUpperCase();

}

function parseDate(s) {

return Date.parse(s.replace(/\-/g, '/'));

}

function toNumber(s) {

return Number(s.replace(/[^0-9\.]/g, ""));

}

function compareByColumn(nCol, bDescending, sType) {

var c = nCol;

var d = bDescending;

var fTypeCast = String;

if (sType == "Number")

fTypeCast = Number;

else if (sType == "Date")

fTypeCast = parseDate;

else if (sType == "CaseInsensitiveString")

fTypeCast = CaseInsensitiveString;

return function (n1, n2) {

if (fTypeCast(getInnerText(n1.cells[c]))< fTypeCast(getInnerText(n2.cells[c])))

return d ? -1 : +1;

if (fTypeCast(getInnerText(n1.cells[c])) >fTypeCast(getInnerText(n2.cells[c])))

return d ? +1 : -1;

return 0;

};

}

function sortColumn(e) {

var tmp, el,tHeadParent;

if (ie5)

tmp = e.srcElement;

else if (dom)

tmp = e.target;

tHeadParent = getParent(tmp, "THEAD");

el = getParent(tmp, "TD");

if (tHeadParent == null)

return;

if (el != null) {

var p =el.parentNode;

var i;

if (el._descending) // catch the null

el._descending= false;

else

el._descending= true;

if (tHeadParent.arrow != null) {

if (tHeadParent.arrow.parentNode!= el) {

tHeadParent.arrow.parentNode._descending= null;

}

tHeadParent.arrow.parentNode.removeChild(tHeadParent.arrow);

}

if (el._descending)

tHeadParent.arrow = arrowDown.cloneNode(true);

else

tHeadParent.arrow= arrowUp.cloneNode(true);

el.appendChild(tHeadParent.arrow);

// get theindex of the td

for (i=0; i<p.cells.length; i++) {

if (p.cells[i]== el) break;

}

var table =getParent(el, "TABLE");

// can'tfail

sortTable(table,i,el._descending,el.getAttribute("type"));

}

}

function getInnerText(el) {

if (ie5) return el.innerText; //Not needed but it is faster

var str = "";

for (var i=0; i<el.childNodes.length; i++) {

switch (el.childNodes.item(i).nodeType) {

case 1: //ELEMENT_NODE

str +=getInnerText(el.childNodes.item(i));

break;

case 3: //TEXT_NODE

str +=el.childNodes.item(i).nodeValue;

break;

}

}

return str;

}

function getParent(el, pTagName) {

if (el == null) return null;

else if (el.nodeType == 1 && el.tagName.toLowerCase() ==pTagName.toLowerCase())

return el;

else

return getParent(el.parentNode, pTagName);

}

</SCRIPT>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>查询车次:k907</title>

</head>

<body>

<TABLE onclick=sortColumn(event) width="98%" style="border-collapse:collapse" bordercolor="#B4B4B4"cellspacing="0" border="1">

<THEAD><tr>

<td bgcolor="#089CCE"align="center" style="color:#FFFFFF"> 车次</td>

<td bgcolor="#089CCE"align="center" style="color:#FFFFFF">类型</td>

</tr>

</THEAD>

<TR onmouseout="this.style.background='#FFFFFF'" onmouseover="this.style.background='#BDDFFF'">

<td align="center">K906/K907</td>

<td align="center">空调快速 </td>

</tr>

<TR onmouseout="this.style.background='#FFFFFF'" onmouseover="this.style.background='#BDDFFF'">

<td align="center">K9079</td>

<td align="center">快速 </td>

</tr>

</table>

</body>

</html>

显示选中条的效果

<script language="javascript" type="text/javascript">

//用颜色显示一条信息

function change()

{

var oObj = event.srcElement;

if(oObj.tagName.toLowerCase()== "td")

{

var oTr =oObj.parentNode;

for(var i=1; i<document.all.tb1.rows.length; i++)

{

document.all.tb1.rows[i].style.backgroundColor= "";

document.all.tb1.rows[i].tag= false; // tb1为表格的名称

}

oTr.style.backgroundColor = "#6699FF";

oTr.tag= true;

}

}

</script>

<tr class="yi_hang_9"onClick="change()"> //在每行的Tr中调用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 要实现JS表格的自动滚动排序,可以使用以下步骤。首先,分析问题并确定需要实现的功能。根据引用\[1\],可以选择匀速滚动或有间隔的平滑滚动。在这个例子中,我们选择匀速滚动。接下来,根据引用\[2\]中的代码,创建一个公共的滚动方法,该方法接受一个元素id名称作为参数。在该方法中,使用jQuery的animate()函数来实现表格的滚动效果。具体来说,通过设置表格的marginTop属性来实现滚动效果,并在滚动完成后将第一行的tr元素移到表格的末尾。最后,根据引用\[3\]中的代码,在body中添加一个表格,并为其设置一个id属性为"testTable"。通过调用setTableRoll("testTable")方法,即可实现表格的自动滚动效果。至于排序功能,根据提供的引用内容,没有提到与排序相关的代码或方法。因此,如果需要实现表格的排序功能,可能需要额外的代码或方法来实现。 #### 引用[.reference_title] - *1* [vue实现table自动滚动](https://blog.csdn.net/weixin_43361722/article/details/131168905)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [table数据自动滚动](https://blog.csdn.net/C_hydar/article/details/130102703)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值