我們在上網中都能看到很多能夠排序的,如大小、時間、價格等
現在我們也試一下排序功能:
排序的函數代碼:裡面含有點擊之後排序--還原,和排升序和降序。
function sortAge(){
//對年齡進行排序,要先進行獲得每一行對象,然後對象對象中的第一個(從0 開始)的大小進行排序
var tabNode = document.getElementById("tabid");
var rows0 = tabNode.rows;
var rows1 = [];
//現將元素拷貝一份出來, 第一行不用排序
for (var x = 1; x < rows0.length; x++) {
rows1[x - 1] = rows0[x];
}
for (var x = 0; x < rows1.length - 1; x++) {//每個元素是行對象
for (var y = x + 1; y < rows1.length; y++) {
//對每一行的內容進行解析成數字
if (parseInt(rows1[x].cells[1].innerHTML) > parseInt(rows1[y].cells[1].innerHTML)) {
//alert("aa="+x+":"+rows1[x].cells[1].innerHTML);
//alert("bb"+rows1[y].cells[1].innerHTML);
var temp = rows1[x];
rows1[x] = rows1[y];
rows1[y] = temp;
}
}
}
/* 點擊之後排序,排序之後恢復之前的狀態
if (flag){
for (var x = 0; x < rows1.length; x++) {
// tabNode.childNodes[0].appendChild(rows[x]);//方法一: 不一定兼容
rows1[x].parentNode.appendChild(rows1[x]);
}
}else{
for (var x = 1; x < rows0.length; x++) {
// tabNode.childNodes[0].appendChild(rows[x]);//方法一: 不一定兼容
rows0[x].parentNode.appendChild(rows0[x]);
}
}
flag=!flag;*/
/* 下面的是點之後出現正序和逆序顯示 正序和逆序的區別就是appendchild的前後關系而已*/
var ageimg=document.getElementById("ageid");
if (flag) {
for (var x = 0; x < rows1.length; x++) {//排好序之後就從0開始
// tabNode.childNodes[0].appendChild(rows[x]);//方法一: 不一定兼容
rows1[x].parentNode.appendChild(rows1[x]);
}
ageimg.innerHTML="年齡▲";//設置上面的圖標
}else{
for (var x = rows1.length-1; x >=0; x--) {
// tabNode.childNodes[0].appendChild(rows[x]);//方法一: 不一定兼容
rows1[x].parentNode.appendChild(rows1[x]);
}
ageimg.innerHTML="年齡▼"
}
flag=!flag;
loading();//排序之後還要對顏色重新設置
}
設置表格的背景顏色代碼,導入的css:
function loading(){
var name;
var tabNode=document.getElementById("tabid");
var rows=tabNode.rows;//獲得每一行的數組對象
var rowslength=rows.length;//每一行的長度
for(var x=1;x<rowslength;x++){//根據每一個去設置
if(x%2==0){
rows[x].className="one";
}else{
rows[x].className="two";
}
//當移動上去之後,之前的顏色要記錄下來,不然移下來之後全部都是一個顏色了
rows[x].onmouseover=function(){
name=this.className;
this.className="three";
}
rows[x].onmouseout=function(){
this.className=name;
}
}
}
onload=function(){
loading();
}
css代碼:
table td a:hover{
background-color:#0080c0;
}
.one{
background-color:#80ff00;
}
.two{
background-color:#ff8040;
}
.three{
background-color:#008040;
}
table{
width:500px;
height:500px;
border:#400040 solid 2px;
border-collapse:collapse;
}
table td,th{
border:solid 2px;
}
table th{
background-color:#c0c0c0;
}
效果圖-----排序之前:

升序:

降序:

完整代碼:
<!DOCTYPE html>
<html>
<head>
<title>sort.html</title>
<style type="text/css">
table td a:hover{
background-color:#0080c0;
}
.one{
background-color:#80ff00;
}
.two{
background-color:#ff8040;
}
.three{
background-color:#008040;
}
table{
width:500px;
height:500px;
border:#400040 solid 2px;
border-collapse:collapse;
}
table td,th{
border:solid 2px;
}
table th{
background-color:#c0c0c0;
}
</style>
<script type="text/javascript">
function loading(){
var name;
var tabNode=document.getElementById("tabid");
var rows=tabNode.rows;//獲得每一行的數組對象
var rowslength=rows.length;//每一行的長度
for(var x=1;x<rowslength;x++){//根據每一個去設置
if(x%2==0){
rows[x].className="one";
}else{
rows[x].className="two";
}
//當移動上去之後,之前的顏色要記錄下來,不然移下來之後全部都是一個顏色了
rows[x].onmouseover=function(){
name=this.className;
this.className="three";
}
rows[x].onmouseout=function(){
this.className=name;
}
}
}
onload=function(){
loading();
}
var flag=true;
function sortAge(){
//對年齡進行排序,要先進行獲得每一行對象,然後對象對象中的第一個(從0 開始)的大小進行排序
var tabNode = document.getElementById("tabid");
var rows0 = tabNode.rows;
var rows1 = [];
//現將元素拷貝一份出來, 第一行不用排序
for (var x = 1; x < rows0.length; x++) {
rows1[x - 1] = rows0[x];
}
for (var x = 0; x < rows1.length - 1; x++) {//每個元素是行對象
for (var y = x + 1; y < rows1.length; y++) {
//對每一行的內容進行解析成數字
if (parseInt(rows1[x].cells[1].innerHTML) > parseInt(rows1[y].cells[1].innerHTML)) {
//alert("aa="+x+":"+rows1[x].cells[1].innerHTML);
//alert("bb"+rows1[y].cells[1].innerHTML);
var temp = rows1[x];
rows1[x] = rows1[y];
rows1[y] = temp;
}
}
}
/* 點擊之後排序,排序之後恢復之前的狀態
if (flag){
for (var x = 0; x < rows1.length; x++) {
// tabNode.childNodes[0].appendChild(rows[x]);//方法一: 不一定兼容
rows1[x].parentNode.appendChild(rows1[x]);
}
}else{
for (var x = 1; x < rows0.length; x++) {
// tabNode.childNodes[0].appendChild(rows[x]);//方法一: 不一定兼容
rows0[x].parentNode.appendChild(rows0[x]);
}
}
flag=!flag;*/
/* 下面的是點之後出現正序和逆序顯示 正序和逆序的區別就是appendchild的前後關系而已*/
var ageimg=document.getElementById("ageid");
if (flag) {
for (var x = 0; x < rows1.length; x++) {//排好序之後就從0開始
// tabNode.childNodes[0].appendChild(rows[x]);//方法一: 不一定兼容
rows1[x].parentNode.appendChild(rows1[x]);
}
ageimg.innerHTML="年齡▲";//設置上面的圖標
}else{
for (var x = rows1.length-1; x >=0; x--) {
// tabNode.childNodes[0].appendChild(rows[x]);//方法一: 不一定兼容
rows1[x].parentNode.appendChild(rows1[x]);
}
ageimg.innerHTML="年齡▼"
}
flag=!flag;
loading();//排序之後還要對顏色重新設置
}
</script>
</head>
<body>
<table id="tabid">
<tr><th>姓名</th>
<th><a href="javascript:void(0)" onclick="sortAge()" id="ageid">年齡</a></th>
<th>出生地</th>
</tr>
<tr>
<td>張三</td>
<td>13</td>
<td>湖南長沙</td>
</tr>
<tr>
<td>李四</td>
<td>15</td>
<td>湖南常德</td>
</tr>
<tr>
<td>jack</td>
<td>45</td>
<td>湖南臨澧</td>
</tr>
<tr>
<td>王華</td>
<td>23</td>
<td>浙江杭州</td>
</tr>
<tr>
<td>張進</td>
<td>30</td>
<td>安微合肥</td>
</tr>
<tr>
<td>周全</td>
<td>23</td>
<td>湖南益陽</td>
</tr>
<tr>
<td>楊哥</td>
<td>42</td>
<td>湖南常德</td>
</tr>
</table>
</body>
</html>
以上就是本文的全部內容,很詳細,教大家如何對表格中的元素進行排序操作,感謝大家閱讀這篇javascript實現對表格元素進行排序操作的文章,希望大家喜歡。