作者TonyQ (自立而後立人。)
看板Ajax
标题Re: [问题] 油猴脚本越来越肥了,求优化方案
时间Tue Jul 3 00:28:29 2012
※ 引述《TonyQ (自立而後立人。)》之铭言:
: ◆ From: 114.25.96.203
: ※ 编辑: TonyQ 来自: 114.25.96.203 (07/02 23:18)
: → TonyQ:然後你程式码里面 contains 那段也超慢得,可以一样用建表 07/02 23:20
: → TonyQ:法处理。 07/02 23:20
: → ff760725:请问建表法是...?事实上我基本是程式盲,只是把现成的 07/02 23:30
: → ff760725:拿来,用Chrome查元素之後填上去而已...可否请您开个头, 07/02 23:31
: → ff760725:後面重复复制贴上的工作我来就好了 XDD 07/02 23:31
以这段举例好了
var Asia = new Array(99)
//india
Asia [0] = $("
#pvp_header > h2:contains('Andhra Pradesh')")
Asia [1] = $("
#pvp_header > h2:contains('Bihar')")
Asia [2] = $("
#pvp_header > h2:contains('Chhattisgarh')")
Asia [3] = $("
#pvp_header > h2:contains('Gujarat')")
Asia [4] = $("
#pvp_header > h2:contains('Jammu and Kashmir')")
Asia [5] = $("
#pvp_header > h2:contains('Jharkhand')")
Asia [6] = $("
#pvp_header > h2:contains('Karnataka')")
Asia [7] = $("
#pvp_header > h2:contains('Kerala')")
Asia [8] = $("
#pvp_header > h2:contains('Madhya Pradesh')")
Asia [9] = $("
#pvp_header > h2:contains('Maharashtra')")
Asia [10] = $("
#pvp_header > h2:contains('Northern India')")
Asia [11] = $("
#pvp_header > h2:contains('Orissa')")
Asia [12] = $("
#pvp_header > h2:contains('North Eastern India')")
Asia [13] = $("
#pvp_header > h2:contains('Rajasthan')")
Asia [14] = $("
#pvp_header > h2:contains('Tamil Nadu')")
Asia [15] = $("
#pvp_header > h2:contains('Uttar Pradesh')")
Asia [16] = $("
#pvp_header > h2:contains('West Bengal')")
假设 0-16 的顺序对你很重要的话,可以写成这样
var asiamap = {
'Andhra Pradesh':0,
'Bihar':1,
'Gujarat':2,
'Jammu and Kashmir':3,
'Jharkhand':4,
'Karnataka':5,
'Kerala':6
/* 以此类推 */
};
var Asia = [];
$("
#pvp_header > h2").each(function(){
//这边需要做一点字串上的判定,想办法找出对应的字串 key,
//如果这个选项内容直接就对应到字串那就可以直接做了。
var key = $(this).text(); //范例实作,可能会需要调整
var result = asiamap[key];
if ( result != null){
Asia[result] = $(this);
}
});
基本上就是打索引取代搜寻,你原本这种写法每个 selector 都需要搜遍所有 h2,
如果能只搜寻一次就把需要的东西都找回来,
那效率会从 O(n^2) 变成 O(n) 会差蛮多的。
--
网页上拉近距离的帮手 实现 GMail丰富应用的功臣
数也数不清的友善使用者体验 这就是javascript
欢迎同好到 AJAX 板一同讨论。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.25.96.203
1F:推 ff760725:感谢指教,我试着改看看 07/03 00:57
2F:推 ff760725:其实编号本身不重要,重要的是地名的顺序,因为是照国家 07/03 01:16
3F:→ ff760725:排的,我这一部分当初有找其他人协助,他说序号是必要的 07/03 01:17
4F:→ ff760725:另外改了没反应...估计是字串不对? 07/03 01:17
6F:→ ff760725:这是要侦测每个战场的地名,为之换上不同的背景和配乐... 07/03 01:19
7F:→ TonyQ:你把那一页的html dump 出来贴到 js fiddle 我在帮你作 07/03 01:42
8F:→ TonyQ:sample 07/03 01:42
9F:→ TonyQ:看不到html 实在是很难了解怎麽帮你 07/03 01:42
11F:→ ff760725:不知道为何会一直redirect到show... 07/03 02:05
12F:→ TonyQ:那是因为他js 里面有去作一些判断吧,不过这倒是没关系啦 07/03 10:21
13F:推 ff760725:感谢 <(_ _)> 07/03 13:43
15F:→ ff760725:前面大致都修改完了... 07/03 23:05