当前位置: 首页 > 图文教程 > 网络编程 > Javascript > JScript 寫 sortNode

Javascript
document.createElement()用法及注意事项
Javascript教程:关于内存泄漏问题
延迟事件为0的setTimeout的真正目的
JavaScript图片特效代码下载
AJAX初学:IE缓存页面的问题
AJAX中DOM的操作方法
AJAX中文乱码的两类问题
javascript程序的执行效率问题
网页用户注册界面的设计
ajax应该如何应用?
详解Javascript匿名函数的使用
Ajax:研究密码强度规则(仿google)
JavaScript学习教程
网页制作中常用的Javascript代码
深入学习Javascript函数
JS的Object类的属性和方法
Javascript初学者实例教程(1):简单交互
Javascript初学者实例教程(2):event对象和事件
Javascript初学者实例教程(3):数组和slice()方法
Javascript初学者实例教程(4):对象和构造方法

Javascript 中的 JScript 寫 sortNode


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-10   浏览: 248 ::
收藏到网摘: n/a

JScript 利用 Array.sort() 和 Nodes.swap()
來完成重新排列。

但速度比XML的sortNode慢。(-_-メ)

 

 

 

 

 

<!--
http://dwin.net

http://dewin.tk

Copyright(c) 1998-2004 dewin all rights reserved

Start 2003-09-18 15:50
Finish  2003-09-18 16:17
-->

<body>
<script>
/*  create the table   */
TRlength = 100

letter="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
str = "\
<table id=test style=''>\
 <tbody>\
  <tr onclick='if(event.srcElement!=this)sortNode(event.srcElement)'><td style='background:#FF69B4'>Letter</td><td style='background:#ADFF2F'>Name</td><td style='background:#87CEFA'>Money</td></tr>\
 </tbody>\
 <tbody>"
for(i=0;i<TRlength;i++)
 str += "<tr><td>"+letter.charAt(Math.floor(Math.random()*10000%62))+"</td><td>"+String.fromCharCode(Math.round(Math.random()*(40869-19968)+19968))+"</td><td>"+String(Math.random()).slice(2)+"</td></tr>"
str += "</tbody>\
</table>"
document.write(str)

 

 

 

 

ary = [];
oTR = test.childNodes[1].childNodes;
oTRorder = test.firstChild.firstChild.childNodes;

for(i=0, j=oTR.length; i<j; i++)//collect TR nodes in Array
 ary[i] = oTR[i];
for(i=0, j=oTRorder.length; i<j; i++)
 oTRorder[i].order = -1;

 

function sortNode(SortNode){
var time = new Date()
var tempa, tempb, oTD, orders
oTD = SortNode.sourceIndex-SortNode.parentElement.sourceIndex-1;//which TD we Click
orders = SortNode.order = -SortNode.order;

ary.sort(//sort the nodes here.
 function(a,b){
  tempa = a.childNodes[oTD].innerText;//you can use   a.childNodes[oTD].innerText.length   or other things to sort
  tempb = b.childNodes[oTD].innerText;
  temp = tempa<tempb?-orders:tempa==tempb?0:orders;
  return temp;
  }
 )

for(i=0; i<oTR.length; i++)
 oTR[i].swapNode(ary[i]);//swap TR nodes

alert(new Date()-time);
}

</script>