【Javascript】UI组件之排序表格学习笔记

学习时间:2017.3.27

代码地址

效果预览

1.为了使js更加独立,减少js对html的依赖性,使用两个函数分别创建td和tr。

2.addTd函数有两个参数,一个参数是这些td元素加入哪个行,一个参数是这些td元素的内容。使用for循环,创建td元素,td元素的每个值赋上,记住要把每一td元素利用appendChild函数加入到对应行中。记得最后要返回这个行元素。

3.addTr函数没有参数,利用for循环创建tr,之后为每个tr元素调用addTd,把这些tr元素成为table的子元素。这样一来,我想要的表格就形成了,而且没有在html文档中出现,是由js创建的。

4.创建addTh函数,这个函数需要一个tr元素,同样的,要在这个tr元素里利用addTd函数为这个tr创建td元素,并赋值和样式。使用for循环,来对th进行升序排序和降序排序。然后把这个th添加到表格之中。

5.我们来编写排序函数。

1)这个函数需要两个参数,第一个参数是一个div元素,第二个是一个flag标志(true or false)。为这个div设置样式,通过 style样式让它变成一个三角形。

2)使用addEventListener,当点击这个div时,触发一个函数,获取th这行的td以及这是第几列。创建一个排序数组和一个存储排序后的新数组,获取行元素,加上false参数。

3)利用for循环,把每个行元素的每一列的内容push到排序数组里面。利用sort函数将排序后的数组储存在新数组里面,这时得到的是降序排序。这个时候我们传递的第二个参数flag标志有发挥作用了,如果我们想要的是升序排序,使用reverse函数颠倒数组中的元素,得到升序排序。

4)此时重新获取当前列的数据分布情况。把排序数组重置,然后再利用for循环把每个行元素的每一列的内容push到排序数组里面。

5)这个时候要根据前后两个数组,重新排序列表项。这个改变函数需要两个参数,分别是前后两个数组。利用for循环,记录当前值在新数组中的位置,并寻找当前值在原数组中的位置,如果当前值在两个数组中的位置不一样,就交换两个节点的内容。

6)返回这个div元素。

6.编写降序函数。这个数组需要td元素作参数。创建div元素,调用排序数组,第二个参数为true,设置样式。把这个div元素加到td元素后面。

7.编写升序函数。与降序函数相似,只是第二个参数改为false。

8.为了使用户鼠标在三角形时知道可以按动,添加onmouseover和onmouseout函数修改三角形颜色。

8.最后,让我们创建一个结构把一些内容放在里面,这样以后修改数据就非常方便了。