首页 > 编程语言 > 详细

数组排序的一些应用实现

时间:2016-07-05 13:55:34      阅读:165      评论:0      收藏:0      [点我收藏+]

昨天看了一下有关数组的知识,想着找一些小实例来实现,奈何技术不到位,一个多小时才写出来了一个小应用,暂时没有测试兼容性问题,只兼容到了IE9

练习很简单,主要是通过按钮点击实现图片排序问题,如下:

技术分享

 

一、布局方式:

我是在ul下将每张图片放在li中,文字描述采用p标签,同时给每个li添加一个左浮动(关于浮动,后面的排序问题上不是很理解)

二、js实现

1、由于涉及到排序问题,因此我们自然而然的可以想到数组的解决方式,因为数组对象封装了一些排序方法供我们使用

但是我们获取的ul下的li是一个标签节点的集合,为HTMLCollection,因此要将标签转为数组

方法为:

arr=Array.prototype.slice.apply(oLi);

但是在IE8下测试时提示this不是一个javascript对象,,,,待理解

此时就得到了一个内部元素为li的数组集合,

在此就可以对得到的节点数组进行排序,,

实现过程:

A)开始没有添加打乱顺序事件的时候,只将每次点击事件实现数组的反转然后再循环插入到ul中,可以实现顺序排序

但是当加入打乱顺序事件后,li乱序再进行排序便出现了问题

B)解决方法,给每个li添加了一个index标记,标记等于最初时li的位置

顺序排序时添加一个sort中的比较事件

 

注:最初不理解地方,当我执行

ul.appendChild(li[0])

之后,第一张图片会跑到最后面的地方,图片顺序依次为2-3-4-5-6-7-8-1

原因:li原味dom树中的节点,执行上面代码会将li从dom树中最初位置移动到最后位置,如果想要再后面再继续插入li,要对

li节点进行clone操作,原来dom树中没有的节点被执行插入操作会直接插入到最后,而如果原来就是dom树中的一员,则会

从原来位置移动到最后,,,但对节点进行clone操作时,不可复制事件。

 

数组排序的一些应用实现

原文:http://www.cnblogs.com/xmguo/p/5643198.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!