Re: [問題] 油猴腳本越來越肥了,求優化方案

看板Ajax作者 (自立而後立人。)時間14年前 (2012/07/03 00:28), 編輯推噓5(5010)
留言15則, 2人參與, 最新討論串3/4 (看更多)
※ 引述《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

07/03 00:57, , 1F
感謝指教,我試著改看看
07/03 00:57, 1F

07/03 01:16, , 2F
其實編號本身不重要,重要的是地名的順序,因為是照國家
07/03 01:16, 2F

07/03 01:17, , 3F
排的,我這一部分當初有找其他人協助,他說序號是必要的
07/03 01:17, 3F

07/03 01:17, , 4F
另外改了沒反應...估計是字串不對?
07/03 01:17, 4F

07/03 01:17, , 5F
這就是地名字串所在的位置
07/03 01:17, 5F

07/03 01:19, , 6F
這是要偵測每個戰場的地名,為之換上不同的背景和配樂...
07/03 01:19, 6F

07/03 01:42, , 7F
你把那一頁的html dump 出來貼到 js fiddle 我在幫你作
07/03 01:42, 7F

07/03 01:42, , 8F
sample
07/03 01:42, 8F

07/03 01:42, , 9F
看不到html 實在是很難瞭解怎麼幫你
07/03 01:42, 9F

07/03 02:04, , 10F
07/03 02:04, 10F

07/03 02:05, , 11F
不知道為何會一直redirect到show...
07/03 02:05, 11F

07/03 10:21, , 12F
那是因為他js 裡面有去作一些判斷吧,不過這倒是沒關係啦
07/03 10:21, 12F

07/03 13:43, , 13F
感謝 <(_ _)>
07/03 13:43, 13F

07/03 23:04, , 14F

07/03 23:05, , 15F
前面大致都修改完了...
07/03 23:05, 15F
文章代碼(AID): #1FySmmEC (Ajax)
文章代碼(AID): #1FySmmEC (Ajax)