找回密码
 注册

QQ登录

只需一步,快速开始

123
返回列表 发新帖
楼主: windy2000

动态表格(20021118 改完)

[复制链接]
发表于 2002-11-18 15:02:00 | 显示全部楼层
写错了吧?
 楼主| 发表于 2002-11-18 15:10:00 | 显示全部楼层
obj.children(0).children(i).swapNode(theTable[i-1][1]);

obj = table

children(0) = 第 1 个 tbody (or thead ?)

children(i) = 第 i 个 tr

如果我理解的没有错的话,改成:

change_row(the_tab,tab_arr[i][1],i-1); //我的 i 是从 1 开始!

function change_row(the_tab,line1,line2){
        the_tab.rows[line1].swapNode(the_tab.rows[line2])
}


应该没错吧??(~_~)
发表于 2002-11-18 15:12:00 | 显示全部楼层
不对,你现在还是指定了行数,而不是对象,这样在一边swap的同时,还是发生改变了哦~
只有指定对象才行,不管怎么动,指向的始终是它,明白否? 我是想明白了

另外不要用children了,原因见我前一页的帖子
发表于 2002-11-18 15:28:00 | 显示全部楼层
1.
tab_arr.push(new Array(the_tab.rows[i].cells[col].innerText.toLowerCase(),the_tab.rows[i]));

2.
for(i=1;i<tab_arr.length;i++){
        change_row(the_tab,tab_arr[i][1],i);
}

3.
line1.swapNode(the_tab.rows[line2])

改了以上三处,你的程序运行时间几乎提高了一倍哦~用我前一页的表格测试一下
原来需要800ms以上,现在只要400多ms
 楼主| 发表于 2002-11-18 15:38:00 | 显示全部楼层

呵呵,我也想通了!!!

原来是对象符值!!!

呵呵,开始的方向就走错了~~~~~~~~

不错,速度比我的方法提高了 60% 以上!!(^o^)
 楼主| 发表于 2002-11-18 15:45:00 | 显示全部楼层

呵呵,这么快就帮我改好了??(^o^)

有一点点小错误:

the_tab.rows[i+1].swapNode(tab_arr[i][1]);

我是从第一行,而不是第 零 行 开始的拉!!(^o^)

change_row 函数其他地方还有用到,不能改!(^o^)
发表于 2002-11-18 15:48:00 | 显示全部楼层
哦,具体怎么用就看你啦~只是几个关键的地方说明一下而已
这个方法不一定是最好的,但我还是比较得意D

webfx的表格排序重绘部分你研究了没有?我没仔细看,好象没看到它重绘,直接sort就没了......也许没看仔细,你来研究研究?
 楼主| 发表于 2002-11-18 16:09:00 | 显示全部楼层

刚刚研究了一下,不太像是重绘!

把每行的 tr 对象元素符值给数组变量

然后对该数组 sort 排序(传递列变量)

之后,再 appendChild (这一点值得重视,好像 append 已有元素有着 swap 的作用!)

我按照他的办法再试试看!!!

 楼主| 发表于 2002-11-18 16:15:00 | 显示全部楼层
把 排序部分 在 已有的基础上 改成:

for(i=0;i<tab_arr.length;i++){
        the_tab.lastChild.appendChild(tab_arr[i][1]);
}

速度提高的更可怕!!!!!!!!!!!!

500 行 中文排序 不到 3 秒!!!!!!!!
发表于 2002-11-18 16:26:00 | 显示全部楼层
的确可怕!!!用了append,比swap提高了5倍,天哪!!!

 提示:您可以先修改部分代码再运行

发表于 2002-11-18 16:31:00 | 显示全部楼层
我看主要还是因为swap需要同时操作2行,而append时因为直接用了obj,所以根本就是
31254->32541->35412->54123->51234->12345!一定是这样
其实跟你一开始的思路是一样的,只是你采用了临时行,而append不需要!
这个帖子应该进精华
 楼主| 发表于 2002-11-18 16:35:00 | 显示全部楼层

是呀!!

呵呵,不看不知道,世界真奇妙!!!

这几天的时间没有白费!!!(^o^)

PS: 早该进精华贴了!!(^&^)
发表于 2002-11-18 16:42:00 | 显示全部楼层
这不就等最后的结论出来嘛,其实排序没什么,我一开始就觉得运行效率决定性的因素不在排序上
收了
发表于 2002-11-18 21:15:00 | 显示全部楼层
再加最后一点,下面是qiushuiwuhen大虾的原帖,需要js的可以看看。(好不容易才搜到的)

JS实现部分汉字UrlEncode和拼音功能:
http://bbs.blueidea.com/viewthread.php?tid=638290
发表于 2002-11-18 21:20:00 | 显示全部楼层
啊,qiushui这篇怎么没归入精华,一直没留意,这么高难度的东西不进真是说不过去了,归了
发表于 2002-11-19 00:16:00 | 显示全部楼层
等你们讨论完了再归吧~~~
 楼主| 发表于 2002-11-19 09:09:00 | 显示全部楼层

我原先发过的一个贴字:

http://bbs.blueidea.com/viewthread.php?tid=698584

不知看过没有~~~~~~

不过,我有一个问题,urlEncode 怎么转换成 Unicode 编码??

我试了半天(十六进制、二进制)也找不到规律!!

(中文的escape != urlEncode)
 楼主| 发表于 2002-11-19 09:21:00 | 显示全部楼层
例如:

编程

urlEncode -> %B1%E0%B3%CC

escape     -> %u7F16%u7A0B

unicode    -> 32534(7F16) 31243(7A0B)

(B1E0 -> 7F16,  B3CC -> 7A0B)

没看出来什么规律~~~~~~
发表于 2002-11-19 09:56:00 | 显示全部楼层
编码问题另开帖子吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|Archiver|手机版|blueidea.com ( 湘ICP备19000417号-2 )

GMT+8, 2021-12-5 13:54 , Processed in 0.062553 second(s), 7 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表