作者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