数组排序的一些应用实现

昨天看了一下有关数组的知识,想着找一些小实例来实现,奈何技术不到位,一个多小时才写出来了一个小应用,暂时没有测试兼容性问题,只兼容到了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操作时,不可复制事件。

时间: 2024-11-06 07:48:33

数组排序的一些应用实现的相关文章

初识数组排序!!!!

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>初识数组排序</title> <!--调试成功--> <style type="text/css"> *{ padding:0; margin: 0; } li,ul{ list-style: none; } #p

NSSortDescriptor对象进行数组排序

//创建一个数组 NSArray *array = @[@"zhangsan", @"lisi", @"zhonger", @"zhubada", @"honghunag"]; //创建一个排序条件,也就是一个NSSortDescriptor对象 //其中第一个参数为数组中对象要按照什么属性来排序(比如自身.姓名,年龄等) //第二个参数为指定排序方式是升序还是降序 //ascending  排序的意思,默

JavaScript - Array对象的使用 及 数组排序 sort

<html> <head> <head> <body> <script language="javascript"> // Array对象 // 第一种构造方法 var arr = new Array(); alert(arr.length); arr[0] = 520 ; arr[1] = "wjp" ; alert(arr.length); // 第二种构造方法 // Array(4) ; // 第三种

写个函数用来对二维数组排序

29.写个函数用来对二维数组排序(新浪) Foreach有两种语法: 语法一:foreach($arr as $value){ Echo $value; } 语法一:foreach($arr as $key=>$value){ Echo $key . "=>" . $value; } 使用foreach遍历二维数组 与数组排序有关的函数: ?  sort():对数组元素的值升序排列,不保留索引关系 ?  rsort():对数组元素的值降序排列,不保留索引关系. ?  aso

写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数

下面代码没有认真看: <?php //二维数组排序, $arr是数据,$keys是排序的健值,$order是排序规则,1是升序,0是降序 function array_sort($arr, $keys, $order = 0) { if (!is_array($arr)) { return false; } $keysvalue = array(); foreach ($arr as $key => $val) { $keysvalue[$key] = $val[$keys]; } if ($

java中数组排序.知识点

import java.util.*; //选择排序 class SwitchTest { public static void main(String[] args) { int[] arr = {3,5,6,23,45,2}; //排序前 printArray(arr); //排序后 // selectSort(arr); Arrays.sort(arr);//java中已经定义好的一种排序方式,开发中,对数组排序,要使用该句代码 // bubbleSort(arr); printArray

PHP 二维数组排序 可以按指定 键值排序

<?php header("Content-Type:utf-8"); $arr = array( 0 => array( 'name' => '国际原油价格', 'url_pinyin' => 'kucun', ), 1 => array( 'name' => '原油', 'url_pinyin' => 'jiage', ), 2 => array( 'name' => '原油价格', 'url_pinyin' => 'yu

数组排序(java)冒泡法

public class ArrayTest03{ /* Name:数组排序,冒泡法 Power by :Stuart Date:2015-4-23*/ public static void main(String args[]){ //定义一个integer数组 int array[]={0,1,4,8,5,4,10,9}; for(int i=0;i<array.length;i++){ //第二层循环从第一层循环的元素第一次后一个开始 for(int j=i+1;j<array.leng

数组排序-Objectivec

发表于昨天(23:33)(2013-11-03 23:33) ,已有15次阅读 ,共0个评论 摘要: 总结OC中数组排序3种方法:sortedArrayUsingSelector:;sortedArrayUsingComparator:;sortedArrayUsingDescriptors: 大体上,OC中常用的数组排序有以下几种方法:sortedArrayUsingSelector:;sortedArrayUsingComparator:;sortedArrayUsingDescriptor

黑马程序员——C学习总结之数组排序算法实现

发表试试 黑马程序员--C学习总结之数组排序算法实现,布布扣,bubuko.com