javascript 节点排序实现代码

 更新时间:2011年01月31日 18:03:54   作者:  
为了让自定义选择选择出的节点集合尽可能接近原生API选出的结果,我们往往要对结果集进行排序,此顺序当然是从上到下,从左到右的DOM树顺序。
在IE中我们可以利用sourceIndex,标准浏览器我们可以用compareDocumentPosition,但对于旧一点的标准浏览器呢?XML呢?因此我们就需要根据一个节点的属性确定它与另一个节点的关系了。
我的思路很简单,如果它们相同,返回0(用于去重),如果它们的父节点相同,那么根据nextSibling确定两者的先后顺序,否则就找到其最近公共祖先与其他两个最接近这祖先的两个父节点(人性点说,是伯父与父亲),这时不就是与父节点相同的情况吗?!根据nextSibling确定它们的顺序,它们的顺序就是它们的孩子的顺序(因此有一个叫李刚的爹很重要,在这个世袭制的世界上!)不过,有时最近公共祖先就是比较双方的某一个呢,那当然是它最近了。
剩下的问题就是求最近公共祖先的问题了。我的思路也很简单,不一定高效,毕竟大学把数学都荒废了。不断向上取得它们的父节点,直到最顶的HTML元素,连同最初那个节点,组成两个数组。然后每次取数组最后的元素进行比较,如果相同就去掉它们,因为相同的都是公共祖先,不相同就往上取其中一方就行了。
下面是测试页面与源码:
由于使用了window.console,因此建议在firefox,IE8,chrome下查看结果。

[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]

相关文章

  • js关于命名空间的函数实例

    js关于命名空间的函数实例

    这篇文章主要介绍了js关于命名空间的函数,实例讲述了namespace函数的使用技巧,需要的朋友可以参考下
    2015-02-02
  • 使用Javascript简单实现图片无缝滚动

    使用Javascript简单实现图片无缝滚动

    本文简单介绍了使用原生javascript实现简单的图片无缝滚动的方法,并附上示例代码,推荐给大家,直接可以用在项目中的。
    2014-12-12
  • js编写简易的计算器

    js编写简易的计算器

    这篇文章主要为大家详细介绍了js编写简易的计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-07-07
  • 纯JavaScript实现HTML5 Canvas六种特效滤镜示例

    纯JavaScript实现HTML5 Canvas六种特效滤镜示例

    实现了六款简单常见HTML5 Canvas特效滤镜,并且封装成一个纯JavaScript可调用的API文件gloomyfishfilter.js,程序源代码如下,感兴趣的朋友可以参考下哈
    2013-06-06
  • 什么是cookie?js手动创建和存储cookie

    什么是cookie?js手动创建和存储cookie

    cookie 是存储于访问者的计算机中的变量,在这个例子中我们要创建一个存储访问者名字的 cookie,需要的朋友可以参考下
    2014-05-05
  • 基于Javascript实现文件实时加载进度的方法

    基于Javascript实现文件实时加载进度的方法

    不知道大家有没有发现在现在的移动页面上,有很多情况需要加载大量的资源。但是移动端的访问速度和pc还是有很大的差距,有些时候需要一些取巧的方式来提升用户体验,而实时显示加载进度就是其中一种。这篇文章就给大家分享了Javascript实现文件实时加载进度的方法。
    2016-10-10
  • 学习JavaScript设计模式(多态)

    学习JavaScript设计模式(多态)

    这篇文章主要带领大家学习JavaScript设计模式,其中重点介绍多态,举例说明多态的思想,对多态进行详细剖析,感兴趣的小伙伴们可以参考一下
    2015-11-11
  • JavaScript中获取时间的函数集

    JavaScript中获取时间的函数集

    这篇文章主要介绍了JavaScript中获取时间的函数集,通过实例代码给大家讲解,非常详细,感兴趣的朋友一起学习吧
    2016-08-08
  • javascript中数组和字符串的方法对比

    javascript中数组和字符串的方法对比

    下面小编就为大家带来一篇javascript中数组和字符串的方法对比。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • JavaScript实现获取img的原始尺寸的方法详解

    JavaScript实现获取img的原始尺寸的方法详解

    在微信小程序开发时,它的image标签有一个默认高度,这样你的图片很可能出现被压缩变形的情况,所以就需要获取到图片的原始尺寸对image的宽高设置,本文就来分享一下JavaScript实现获取img的原始尺寸的方法吧
    2023-03-03

最新评论