表格排序

表格排序

文章目录

    1.制作一个表格

    2.获取对象

    3.创建一个数组对象

    4.封装正序方法

    5.封装倒序方法

    6.遍历赋值

    7.绑定点击事件

效果图

表格排序

1.制作一个表格

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<div id="table">
<ul class="hh">
<div class="dian" flag="0">名称</div>
<div class="dian2" flag="0">修改日期</div>
<div class="dian3" flag="0">类型</div>
<div class="dian4" flag="0">大小</div>
</ul>
<ul class="one">
<li >13</li>
<li>3</li>
<li>文件夹</li>
<li>1KB</li>
</ul>
<ul class="one">
<li >2.2</li>
<li>4</li>
<li>jpeg</li>
<li>2KB</li>
</ul>
<ul class="one">
<li >7</li>
<li>1</li>
<li>html</li>
<li>1KB</li>
</ul>
<ul class="one">
<li >5</li>
<li>2</li>
<li>ppt</li>
<li>3KB</li>
</ul>
<ul class="one">
<li >4.6</li>
<li>9</li>
<li>文件夹</li>
<li>2KB</li>
</ul>
<ul class="one">
<li >11</li>
<li>6</li>
<li>文件夹</li>
<li>5KB</li>
</ul>
<ul class="one">
<li >3</li>
<li>5</li>
<li>JS</li>
<li>4KB</li>
</ul>
</div>

2.获取对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var big = document.getElementById("table");//获取表格
var title = document.getElementsByClassName("hh")[0].children;//获取表头的名称 修改日期 类型 大小
console.log(title)
var main = document.getElementsByClassName("one");//获取表格内容的所有ul
console.log(main);
var lis = document.getElementsByTagName("li");//获取表格内容的所有li
console.dir(lis);
var dian = document.getElementsByClassName("dian")[0];
console.dir(dian);
var dian2 = document.getElementsByClassName("dian2")[0];
var dian3 = document.getElementsByClassName("dian3")[0];
var dian4 = document.getElementsByClassName("dian4")[0];
console.dir(dian4);

3.创建一个数组对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
var data = [
{
"name": parseFloat(main[0].children[0].innerHTML),
"time": parseFloat(main[0].children[1].innerHTML),
"type": main[0].children[2].innerHTML,
"size": main[0].children[3].innerHTML,
},
{
"name": parseFloat(main[1].children[0].innerHTML),
"time": parseFloat(main[1].children[1].innerHTML),
"type": main[1].children[2].innerHTML,
"size": main[1].children[3].innerHTML,
},
{
"name": parseFloat(main[2].children[0].innerHTML),
"time": parseFloat(main[2].children[1].innerHTML),
"type": main[2].children[2].innerHTML,
"size": main[2].children[3].innerHTML,
},
{
"name": parseFloat(main[3].children[0].innerHTML),
"time": parseFloat(main[3].children[1].innerHTML),
"type": main[3].children[2].innerHTML,
"size": main[3].children[3].innerHTML,
},
{
"name": parseFloat(main[4].children[0].innerHTML),
"time": parseFloat(main[4].children[1].innerHTML),
"type": main[4].children[2].innerHTML,
"size": main[4].children[3].innerHTML,
},
{
"name": parseFloat(main[5].children[0].innerHTML),
"time": parseFloat(main[5].children[1].innerHTML),
"type": main[5].children[2].innerHTML,
"size": main[5].children[3].innerHTML,
},
{
"name": parseFloat(main[6].children[0].innerHTML),
"time": parseFloat(main[6].children[1].innerHTML),
"type": main[6].children[2].innerHTML,
"size": main[6].children[3].innerHTML,
},
]

data为一个数组 数组里面有7个对象 每个对象都有4个属性 name,time,type,size

4.封装正序方法

1
2
3
4
5
6
7
8
9
10
11
12
function zhengxu(name){
for(var i = 0; i < data.length; i++) {
for(var j = 0; j < data.length - i - 1; j++) {
if(data[j][name] > data[j + 1][name]) {
var x = data[j];
data[j] = data[j + 1];
data[j + 1] = x;
}
}
}
}

使用冒泡排序的原理 对每个属性正序排列

5.封装倒序方法

1
2
3
4
5
6
7
8
9
10
11
12
function daoxu(name){
for(var i = 0; i < data.length; i++) {
for(var j = 0; j < data.length - i - 1; j++) {
if(data[j][name] < data[j + 1][name]) {
var x = data[j];
data[j] = data[j + 1];
data[j + 1] = x;
}
}
}
}

6.遍历赋值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function show() {
for (var i=0;i<main.length; i++){
main[i].children[0].innerHTML=data[i].name;
}
for (var i=0;i<main.length; i++){
main[i].children[1].innerHTML=data[i].time;
}
for (var i=0;i<main.length; i++){
main[i].children[2].innerHTML=data[i].type;
}
for (var i=0;i<main.length; i++){
main[i].children[3].innerHTML=data[i].size;
}
}

7.绑定点击事件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
dian.onclick = function () {
if(dian.flag=="0"){
zhengxu("name");
dian.flag=1;
}else{
daoxu("name");
dian.flag=0;
}
show();
}
dian2.onclick = function () {
if(dian.flag=="0"){
zhengxu("time");
dian.flag=1;
}else{
daoxu("time");
dian.flag=0;
}
show();
}
dian3.onclick = function () {
if(dian.flag=="0"){
zhengxu("type");
dian.flag=1;
}else{
daoxu("type");
dian.flag=0;
}
show();
}
dian4.onclick = function () {
if(dian.flag=="0"){
zhengxu("size");
dian.flag=1;
}else{
daoxu("size");
dian.flag=0;
}
show();
}

February 5, 2017 By litteredhat