可以对表格的各列进行排序的函数类
<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transicional//ES http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
<html xmlns=http://www.w3.org/1999/xhtml>
<cabeza>
<meta http-equiv=Tipo de contenido content=text/html; juego de caracteres=gb2312 />
<title>tabla排序类</title>
</cabeza>
<cuerpo>
<tipo de estilo=texto/css>
.fu_list{ ancho:400px; borde: 1 px sólido #ebebeb; altura de línea: 20 px; tamaño de fuente: 12px;}
.fu_list el encabezado td{fondo-color:#ebebeb;}
.fu_list td{padding:5px;}
.fu_list a{outline:none;/*ff*/hide-focus:expression(this.hideFocus=true);/*ie*/ text-decoration:none; color:#333;}
.fu_list encabeza un{padding-right:15px;}
.fu_list thead a.up, .fu_list thead a.down{ fondo:url(up.gif) centro derecha sin repetición; }
.fu_list el encabezado a.down{imagen-de-fondo:url(down.gif);}
</estilo>
<borde de tabla=0 espacio entre celdas=0 relleno de celdas=0 clase=fu_list>
<cabeza>
<tr>
<td> <a href=javascript:void(0) id=idTitle>名称</a> / <a href=javascript:void(0) id=idExt>类型</a></td>
<td width=200 align=center><a href=javascript:void(0) id=idAddtime class=up>上传时间</a></td>
<td width=50 align=center><a href=javascript:void(0) id=idSize>大小</a></td>
</tr>
</thead>
<tbody id=idList>
<tr>
<td _ext=rar>nuevo.rar</td>
<td align=center _order=2008/9/12 8:51:09>2008-9-12 8:51:09</td>
<td align=right _order=433247>423,09 000</td>
</tr>
<tr>
<td _ext=js>TagControl.js</td>
<td align=center _order=2008/9/23 11:26:57>2008-9-23 11:26:57</td>
<td align=right _order=1387>1,35 mil</td>
</tr>
<tr>
<td _ext=js>Scroller.js</td>
<td align=center _order=2008/9/23 11:26:57>2008-9-23 11:26:57</td>
<td align=right _order=2556>2,5 K</td>
</tr>
<tr>
<td _ext=js>AlertBox.js</td>
<td align=center _order=2008/9/23 11:26:57>2008-9-23 11:26:57</td>
<td align=right _order=3565>3,48 K</td>
</tr>
<tr>
<td _ext=htm>1.htm</td>
<td align=center _order=2008/10/4 20:21:54>2008-10-4 20:21:54</td>
<td align=right _order=11394>11,13 K</td>
</tr>
<tr>
<td _ext=htm>4.htm</td>
<td align=center _order=2008/10/4 20:21:54>2008-10-4 20:21:54</td>
<td align=right _order=351>351 b</td>
</tr>
<tr>
<td _ext=xml>noticias.xml</td>
<td align=center _order=2008/10/4 20:24:11>2008-10-4 20:24:11</td>
<td align=right _order=14074>13,74 K</td>
</tr>
<tr>
<td _ext=xsl>noticias.xsl</td>
<td align=center _order=2008/10/4 20:24:11>2008-10-4 20:24:11</td>
<td align=right _order=16796>16,4 K</td>
</tr>
<tr>
<td _ext=js>función.js</td>
<td align=center _order=2008/10/4 20:24:11>2008-10-4 20:24:11</td>
<td align=right _order=2844>2,78 K</td>
</tr>
</tbody>
</tabla>
<tipo de script=texto/javascript>
var $ = función (identificación) {
cadena de retorno == tipo de identificación? document.getElementById(id): identificación;
};
clase var = {
crear: función() {
función de retorno() {
this.initialize.apply(esto, argumentos);
}
}
}
Objeto.extender = función (destino, fuente) {
para (propiedad var en fuente) {
destino[propiedad] = fuente[propiedad];
}
destino de regreso;
}
función Cada(lista, diversión){
for (var i = 0, len = lista.longitud; i < len; i++) { fun(lista[i], i); }
};
//////////////////////////////////////
/////////////////////////////////
var OrdenTabla = Class.create();
TableOrder.prototipo = {
inicializar: función (tbody) {
var oEsto = esto;
this.Body = $(tbody);//tbody对象
this.Rows = [];//行集合
Cada(this.Body.rows, function(o){ oThis.Rows.push(o); })
},
//排序并显示
Ordenar: función (orden) {
//排序
this.Rows.sort(this.Compare(orden));
orden.Abajo && this.Rows.reverse();
//显示表格
var oFragment = document.createDocumentFragment();
Cada(this.Rows, function(o){ oFragment.appendChild(o); });
this.Body.appendChild(oFragmento);
},
//比较函数
Comparar: función (orden) {
var oEsto = esto;
función de retorno (o1, o2) {
var valor1 = oThis.GetValue(o1, orden), valor2 = oThis.GetValue(o2, orden);
valor de retorno1 <valor2? -1: valor1 > valor2? 1: 0;
};
},
//获取比较值
ObtenerValor: función(tr, orden) {
var datos = tr.getElementsByTagName(td)[order.Index].getAttribute(order.Attribute);
//数据转换
cambiar (order.DataType.toLowerCase()) {
caso int:
devolver parseInt(datos) || 0;
flotador de caso:
devolver parseFloat(datos) || 0;
fecha del caso:
devolver Fecha.parse(datos) || 0;
cadena de casos:
por defecto:
devolver datos.toString() || ;
}
},
//添加并返回一个排序对象
Agregar: función (índice, opciones) {
var oEsto = esto;
devolver nueva función(){
//默认属性
this.Attribute = internalHTML;//获取数据的属性
this.DataType = cadena;//数据类型
this.Down = false;//是否按顺序
Object.extend(esto, opciones || {});
//排序对象的属性
this.Index = índice;
this.Sort = function(){ oThis.Sort(esto); };
};
}
}
var a = new TableOrder(idList);
función EstablecerOrden(obj, índice, opciones){
var o = $(obj);
//添加一个排序对象
orden var = to.Add(índice, opciones);
o.onclick = función(){
//取相反排序
orden.Abajo = !orden.Abajo;
//设置样式
Cada(SetOrder._arr, function(o){ o.className = ; })
o.className = orden.Abajo? abajo: arriba;
//排序显示
orden.Ordenar();
devolver falso;
}
//_arr是记录排序项目(这里主要用来设置样式)
¿EstablecerOrden._arr? SetOrder._arr.push(o) : SetOrder._arr = [];
}
EstablecerOrden(idTitle, 0);
SetOrder(idExt, 0, {Atributo: _ext });
SetOrder(idAddtime, 1, {Atributo: _order, Tipo de datos: fecha });
SetOrder(idSize, 2, {Atributo: _order, Tipo de datos: int });
</script>
</cuerpo>
</html>