-
涅魂
-
- 文章: 4463
- 註冊時間: 2004-01-04 11:17 am
- 來自: Taiwan
- 性別: 男生
由 涅魂 » 2011-01-22 3:13 pm
有人建議,也覺得不錯就弄來玩玩囉~~ 這邊修改對arm_view()的修改較多,所以先採用覆蓋的方式來作修改 如果先前已作過數量按鈕的修改的話,必須再對arm_view()改一次數量按鈕的修改才行喔 如果各位還是覺得不方便的話,那我再改成步驟式的修改方式 簡介 寫:作者: 涅魂
功能: 將裝備分頁,並提供使用者選項,讓使用者調整是否要使用分頁。
測試環境: Firefox 3.6.11 Internet Explorer 7.0.5730.11IC Google Chrome 8.0.552.237
Required Extensions: none
實例截圖 寫:
開啟檔案 js/wog_item.js 寫:Goal: 修改arm_view() function, 並加入兩個新的function: arm_toggle_pager() 與 arm_show_page() 尋找 - 代碼: 選擇全部
function arm_view(a,temp_id,b,c1) { ... }
覆蓋為 - 代碼: 選擇全部
function arm_view(a,temp_id,b,c1) { // temp_id編號 -> 0武器,1頭,2身體,3手,4腳,5道具,6道具,7魔石,8勳章,9鑰匙,10精練石 var sum=0; var splitnum = 10; var list = (a != "")?a.split(';'):null; var usepager = parseInt(Gookie('wog_arm_pager'), 10) == 1 ?true:false; var showpager = list === null ? false : list.length/splitnum > 1; w_c('<form action="wog_act.php" method="post" target="mission" name=f1 >'); arm_link(temp_id); w_c(temp_table1); if(showpager) { w_c('<thead><tr><td colspan="12">'); w_c('<input type="checkbox" value="1" onclick="parent.arm_toggle_pager(this.checked)" '+(usepager?'checked="checked"':'')+'/> '); for(var i = 0, len = list.length/splitnum; i < len; ++i) { w_c('<a href="javascript:parent.arm_show_page('+i+')">'+(i+1)+'</a> '); } w_c('</td></tr></thead>'); } w_c('<thead>'); if(temp_id != 7) { w_c('<tr class="head_td"><td>裝備/轉移</td><td>名稱</td><td>物攻</td><td>魔攻</td><td>物防</td><td>魔防</td><td>職業</td><td>屬性</td><td>能力限制</td><td>洞數</td><td>價格</td><td>(<a class="uline" onclick="parent.checkAll(\'item_list[]\');">全</a>)販賣/拍賣</td></tr>'); } else { w_c('<tr class="head_td"><td>轉移</td><td>名稱</td><td>物攻</td><td>魔攻</td><td>物防</td><td>魔防</td><td>敏捷</td><td>力量</td><td>生命</td><td>體質</td><td>智力</td><td>魅力</td><td>信仰</td><td>HP</td><td>價格</td><td>販賣/拍賣</td></tr>'); } w_c('</thead>'); if(list !== null) { var temp_form="document.f1"; var pagenum = 0; for(var i=0;i<list.length;i++) { if(i%splitnum === 0) w_c('<tbody title="page-'+(pagenum++)+'">'); var s2=list[i].split(","); var hole_setup_string="0"; sum++; if(s2[24]!="0"){hole_setup_string='<a href="javascript:parent.act_click(\'hole\',\'view\',\''+s2[1]+'\')">'+s2[24]+'</a>';}
var arm_view_color =""; if(s2[20]=="1"){arm_view_color="bgcolor="+nosend;} if (temp_id != 7) { var temp_sale_str =''; if(temp_id<5) { temp_sale_str ='<input type="checkbox" name="item_list[]" value="'+s2[1]+'">/'; }else { s2[1]=s2[0]; } var temp_message=s2[2]+","+s2[7]+","+s2[8]+","+s2[9]+","+s2[10]+","+s2[11]+","+s2[12]+","+s2[13]+","+s2[14]+","+s2[15]+","+s2[24]+","+s2[25]+","+s2[22]+","+s2[26]; if(temp_id ==5) { var s3=s2[2].split("*"); var s4=s3[0]+'*'+'<span id="show_message_'+s2[1]+'">'+s3[1]+'</span>'; }else { var s4=s2[2]; } w_c('<tr><td>'+sum+'. <input type="radio" name="adds" value="'+s2[1]+'"></td><td '+arm_view_color+'><a class="uline" onmouseover=parent.wog_message_box("'+temp_message+'",1,4,null,event.x||event.pageX,event.y||event.pageY); onmouseout=parent.hidebox(\'wog_message_box\'); onclick="parent.arm_show(event.ctrlKey,\''+s2[2]+'\',\''+s2[1]+'\');" target="mission">'+s4+'</a></td><td>'+bf_c(s2[3])+'</td><td>'+bf_c(s2[4])+'</td><td>'+bf_c(s2[5])+'</td><td>'+bf_c(s2[6])+'</td><td>'+s2[21]+'</td><td>'+s_status[s2[23]]+'</td><td>'+arm_need_status(s2[16],s2[17],s2[18],s2[19])+'</td><td>'+hole_setup_string+'</td><td>'+s2[22]+'</td><td>'+temp_sale_str+'<input type="radio" name="items" value="'+s2[1]+','+s2[2]+'"></td></tr>'); } else { if(s2[13]=="1"){arm_view_color="bgcolor="+nosend;} w_c('<tr><td>'+sum+'. <input type="radio" name="adds" value="'+s2[0]+'"></td><td '+arm_view_color+'>'+s2[14]+'</td><td>'+s2[1]+'</td><td>'+s2[2]+'</td><td>'+s2[3]+'</td><td>'+s2[4]+'</td><td>'+s2[5]+'</td><td>'+s2[6]+'</td><td>'+s2[7]+'</td><td>'+s2[8]+'</td><td>'+s2[9]+'</td><td>'+s2[10]+'</td><td>'+s2[11]+'</td><td>'+s2[16]+'</td><td>'+s2[15]+'</td><td><input type="radio" name="items" value="'+s2[0]+','+s2[14]+'"></td></tr>'); } if(i%splitnum === splitnum-1) w_c('</tbody>'); } if(list.length%splitnum !== 0) w_c('</tbody>'); } if(b != "") { list=b.split(";"); for(var i=0;i<list.length;i++) { s2=list[i].split(","); var arm_unsetup=""; if(s2[21]=="11") { arm_unsetup = '<a href="javascript:parent.act_click(\'arm\',\'unsetup\',\'11\')">卸下</a>'; }else { arm_unsetup = '<a href="javascript:parent.act_click(\'arm\',\'unsetup\',\''+temp_id+'\')">卸下</a>'; } var temp_message=s2[0]+","+s2[5]+","+s2[6]+","+s2[7]+","+s2[8]+","+s2[9]+","+s2[10]+","+s2[11]+","+s2[12]+","+s2[13]+","+s2[18]+","+s2[19]+","+s2[16]+","+s2[22]; w_c('<tr bgcolor="#232323"><td>'+arm_unsetup+'</td><td><font color="#FF0000">E</font> <a class="uline" onmouseover=parent.wog_message_box("'+temp_message+'",1,4,null,event.x||event.pageX,event.y||event.pageY); onmouseout=parent.hidebox(\'wog_message_box\'); onclick="parent.arm_show(event.ctrlKey,\''+s2[0]+'\',\''+s2[20]+'\');" target="mission">'+s2[0]+'</a></td><td>'+bf_c(s2[1])+'</td><td>'+bf_c(s2[2])+'</td><td>'+bf_c(s2[3])+'</td><td>'+bf_c(s2[4])+'</td><td>---</td><td>'+s_status[s2[17]]+'</td><td>---</td><td>---</td><td>'+s2[16]+'</td><td></td></tr>'); } } w_c('<tr><td colspan="15" >請選擇數量(1-99):<input type="text" name="item_num" size="2" maxlength="2" value="1"></td></tr>'); w_c('<tr><td colspan="16" >'); if(temp_id <=5) { w_c('<input type="submit" value="裝備" onclick="parent.mouse_xy(event.x||event.pageX,event.y||event.pageY)" onmouseout=parent.hidebox(\'show_message\');>'); } w_c(' <input type="submit" value="轉移至倉庫" onClick="document.f1.act.value=\'depot_add\'"> <input type="submit" value="販賣" onClick="document.f1.act.value=\'sale\'"> <input type="button" value="拍賣" onClick="parent.sale_item(document.f1.items,document.f1.item_num.value)">('+sum+'/'+c1+')</td></tr>'); w_c('<tr><td colspan="16" >欲轉移需輸入對方遊戲的帳號 <input type="text" name="pay_id" size="16"> <input type="submit" value="轉移給對方" onClick="document.f1.act.value=\'move\'"></td></tr>'); w_c('<tr><td colspan="16" class=b1><ol><li>(使用轉移,販賣,拍賣記得選擇道具(魔石)數量)</li><li>裝備道具數量不能大於9</li></ol></td></tr>'); w_c(temp_table2); w_c('<input type="hidden" name="f" value="arm">'); w_c('<input type="hidden" name="act" value="setup">'); w_c('<input type="hidden" name="temp_type" value="'+temp_id+'">'); w_c('</form>'); w_c('<div id="show_message" style="display:none;position: absolute;left:0; top: 0; Z-INDEX: 303;opacity :0.85;filter:alpha(opacity=85);" ></div>'); p_c(); if(showpager) arm_show_page(usepager? 0 : -1); };
function arm_toggle_pager(state) { Sookie('wog_arm_pager', state?"1":"0"); arm_show_page(state? 0 : -1); }
function arm_show_page(page) { var pagebody = f.f1.childNodes[2].childNodes; var usepager = parseInt(Gookie('wog_arm_pager'), 10) == 1; if(page < 0) { for(var i = 0, len = pagebody.length; i < len; ++i) pagebody[i].style.display = ''; } else if(usepager) { for(var i = 0, len = pagebody.length; i < len; ++i) { if(!pagebody[i].title) continue; pagebody[i].style.display = (pagebody[i].title == 'page-'+page)? '' :'none'; } } }
完成,有任何問題請提出~~
-
黑咪
-
- 文章: 161
- 註冊時間: 2007-12-24 11:23 am
- 性別: 男生
由 黑咪 » 2011-01-22 6:24 pm
@0@!! 竟然如此神速, 之前我還以為要在.PHP和.JS中增加才能完成 如果在V3中, 可以採用嗎?><
再次謝謝涅大的分享
發現圖片中分頁那的"TAKE"是什麼功能?
-
涅魂
-
- 文章: 4463
- 註冊時間: 2004-01-04 11:17 am
- 來自: Taiwan
- 性別: 男生
由 涅魂 » 2011-01-22 8:09 pm
要在V3弄也當然沒問題,這修改的切入點在於說把原先顯示裝備的各個row整理成page之後再決定各頁要不要顯示,不必動到PHP的code
而你說的take是指頁碼左邊的checkbox嗎?這能讓玩家自己決定要不要使用分頁功能,把它取消勾選的話就會恢復成原本的顯示方式了
有的玩家可能比較習慣原本的顯示方式,所以就提供這功能讓玩家自己選擇~~
-
黑咪
-
- 文章: 161
- 註冊時間: 2007-12-24 11:23 am
- 性別: 男生
由 黑咪 » 2011-01-22 8:51 pm
我跟照涅大你增加修改的地方修改了 不過效果錯了 同一種物品就算1件, 就算10個99個物品也當一個計算 超過10件不相同物品會顯示分頁, 不過也不成功, 出來的結果不如理想
在V4.5中測試, 發現把鼠標停在某物品列上面會出現PAGE-0/-1等, 可以取消這效果嗎
-
涅魂
-
- 文章: 4463
- 註冊時間: 2004-01-04 11:17 am
- 來自: Taiwan
- 性別: 男生
由 涅魂 » 2011-01-22 10:08 pm
效果會錯是因為V3的作法與V4.5不同,你可以把程式碼看仔細點,就會知道是哪邊錯了
而滑鼠停留時會出現提示是因為我用title來儲存page資訊,不喜歡這個效果的話也能把title改成id,這樣就不會有提示了
有使用到title的函式有兩個: arm_view()和arm_show_page()
-
黑咪
-
- 文章: 161
- 註冊時間: 2007-12-24 11:23 am
- 性別: 男生
由 黑咪 » 2011-01-23 8:47 pm
看來我不夠能力發現了/_\ 放在原始v3顯示page資訊正常, 但無法運作 在自己的v3中只對第1,第11個才會顯示,第1頁顯示1,2....10,12,13, 第2頁顯示2,3,4....11,12,13 而2者都是對同類物品不論數量也當一個作算
頭大了,,,,明天有空再找找錯處.\_/.
-
涅魂
-
- 文章: 4463
- 註冊時間: 2004-01-04 11:17 am
- 來自: Taiwan
- 性別: 男生
由 涅魂 » 2011-01-23 11:36 pm
這是我改後也能使用的程式碼,改不出來可以參考看看 - 代碼: 選擇全部
//#### arm begin #### function arm_view(a,d,temp_id) { var f=parent.wog_view.document; vData=d; var s1=a.split(";"); var splitnum = 2; var usepager = parseInt(Gookie('wog_arm_pager'), 10) == 1; var showpager = s1.length/splitnum > 1; message_cls(); f.write('<form action="wog_act.php" method="post" target="mission" name=f1 >'); f.write(temp_table1); f.write('<thead>'); if(showpager) { f.write('<tr><td colspan="12"><input type="checkbox" value="1" onclick="parent.arm_toggle_pager(this.checked)"'+(usepager?'checked="checked"':'')+'/>'); for(var i = 0, len = s1.length/splitnum; i < len; ++i) { f.write('<a href="javascript:parent.arm_show_page('+i+')">'+(i+1)+'</a> '); } f.write('</td></tr>'); } f.write('<tr><td>裝備/轉移</td><td>物攻</td><td>魔攻</td><td>物防</td><td>魔防</td><td>速度</td><td>職業</td><td>屬性</td><td>能力限制</td><td>名稱</td><td>價格</td><td>販賣/拍賣</td></tr>'); f.write('</thead>'); var n = 0; var pagenum = 0; var str = ''; for(var i=0;i<s1.length;i++) { var s2=s1[i].split(","); var temps=srhCount(s2[0]); var s3=null; if(tmpNum != "") { s3=tmpNum.split(","); } for(var j=0;j<temps;j++, ++n) { if(s3!=null) { var temp_num="*"+s3[j]; }else { var temp_num=""; } var arm_view_color=""; if(s2[12]=="1"){arm_view_color="bgcolor="+nosend;} if(n%splitnum == 0) { str += '<tbody id="page-'+(pagenum++)+'">'; } str += '<tr '+arm_view_color+'><td><input type="radio" name="adds" value="'+s2[0]+'"></td><td>'+s2[6]+'</td><td>'+s2[7]+'</td><td>'+s2[1]+'</td><td>'+s2[2]+'</td><td>'+s2[3]+'</td><td>'+s2[11]+'</td><td>'+s_status(s2[13])+'</td><td>力:'+s2[8]+' 速:'+s2[9]+' 智:'+s2[10]+'</td><td>'+s2[5]+temp_num+'</td><td>'+s2[4]+'</td><td><input type="radio" name="items" value="'+s2[0]+','+s2[5]+'"></td></tr>'; if(n%splitnum == splitnum - 1) { str += '</tbody>\n'; } } } if(n%splitnum !== 0) str += '</tbody>'; f.write(str); f.write('<tr><td colspan="12" ><input type="submit" value="裝備"> <input type="button" value="轉移" onClick="parent.foot_trun(\'arm\',\'move\',document.f1.pay_id.value,document.f1.item_num.value,document.f1.adds)"> <input type="button" value="販賣" onClick="parent.foot_trun(\'arm\',\'sale\',document.f1.pay_id.value,document.f1.item_num.value,document.f1.items)"> <input type="button" value="拍賣" onClick="parent.sale_item(document.f1.items)"></td></tr>'); f.write('<tr><td colspan="12" >請選擇數量:<select name="item_num">'); for(var j=1;j<10;j++) { f.write('<option value="'+j+'" >'+j+'</option>'); } f.write('</select>(使用轉移及販賣記得選擇道具數量)</td></tr>'); f.write('<tr><td colspan="12" >欲轉移需輸入對方遊戲的帳號 <input type="text" name="pay_id" size="16"></td></tr>'); f.write(temp_table2); f.write('<input type="hidden" name="f" value="arm">'); f.write('<input type="hidden" name="act" value="setup">'); // f.write('<input type="hidden" name="temp_id" value="'+temp_id+'">'); f.write('</form>'); if(showpager) arm_show_page(usepager? 0 : -1); }
function arm_toggle_pager(state) { Sookie('wog_arm_pager', state?"1":"0"); arm_show_page(state? 0 : -1); }
function arm_show_page(page) { //f1 > div > table > tbody+thead+tfoot var pagebody = parent.wog_view.document.f1.childNodes[0].childNodes[0].childNodes; var usepager = parseInt(Gookie('wog_arm_pager'), 10) == 1; if(page < 0) { for(var i = 0, len = pagebody.length; i < len; ++i) { if(pagebody[i].id) pagebody[i].style.display = ''; } } else if(usepager) { for(var i = 0, len = pagebody.length; i < len; ++i) { if(pagebody[i].id) pagebody[i].style.display = (pagebody[i].id == 'page-'+page)? '' :'none'; } } }
-
黑咪
-
- 文章: 161
- 註冊時間: 2007-12-24 11:23 am
- 性別: 男生
由 黑咪 » 2011-01-24 9:08 pm
直接套用後發現也是不能運作呢
-
涅魂
-
- 文章: 4463
- 註冊時間: 2004-01-04 11:17 am
- 來自: Taiwan
- 性別: 男生
由 涅魂 » 2011-01-25 12:42 am
我的目的不是貼出修改片段給你修改,這程式碼是參考用的
所以沒有作任何檢查,我只保證在我本機端能無修改就正常運作
-
黑咪
-
- 文章: 161
- 註冊時間: 2007-12-24 11:23 am
- 性別: 男生
由 黑咪 » 2011-01-25 11:15 am
謝謝涅大, 終於左拼右拼的弄得算好了
就是在同類物品只算一件的問題還未能解決
我會再努力研究研究
-
黑咪
-
- 文章: 161
- 註冊時間: 2007-12-24 11:23 am
- 性別: 男生
由 黑咪 » 2011-01-26 8:38 pm
涅大, 如果有空的話
可以指點一下如何可以把同類物品分開計數嗎?
-
涅魂
-
- 文章: 4463
- 註冊時間: 2004-01-04 11:17 am
- 來自: Taiwan
- 性別: 男生
由 涅魂 » 2011-02-06 6:16 pm
最近在過年,所以遲些才看到這篇
給我些時間,我去檢查一下你所說的問題吧
-
涅魂
-
- 文章: 4463
- 註冊時間: 2004-01-04 11:17 am
- 來自: Taiwan
- 性別: 男生
由 涅魂 » 2011-02-06 8:06 pm
這是修改後的內容,主要是把pager的產生改到最後再處理 只有arm_view()有做更改,arm_toggle_pager()與arm_show_page()並沒有做修改,使用上面的就行了 - 代碼: 選擇全部
//#### arm begin #### function arm_view(a,d,temp_id) { var f=parent.wog_view.document; vData=d; var s1=a.split(";"); var splitnum = 2; var usepager = parseInt(Gookie('wog_arm_pager'), 10) == 1; var showpager = s1.length/splitnum > 1; message_cls(); f.write('<form action="wog_act.php" method="post" target="mission" name=f1 >'); f.write(temp_table1); f.write('<thead>'); if(showpager) { f.write('<tr><td colspan="12"><input type="checkbox" value="1" onclick="parent.arm_toggle_pager(this.checked)"'+(usepager?'checked="checked"':'')+'/><span id="pager-box"></span></td></tr>'); /*f.write('<tr><td colspan="12"><input type="checkbox" value="1" onclick="parent.arm_toggle_pager(this.checked)"'+(usepager?'checked="checked"':'')+'/>'); for(var i = 0, len = s1.length/splitnum; i < len; ++i) { f.write('<a href="javascript:parent.arm_show_page('+i+')">'+(i+1)+'</a> '); } f.write('</td></tr>');*/ } f.write('<tr><td>裝備/轉移</td><td>物攻</td><td>魔攻</td><td>物防</td><td>魔防</td><td>速度</td><td>職業</td><td>屬性</td><td>能力限制</td><td>名稱</td><td>價格</td><td>販賣/拍賣</td></tr>'); f.write('</thead>'); var n = 0; var pagenum = 0; var str = ''; for(var i=0;i<s1.length;i++) { var s2=s1[i].split(","); var temps=srhCount(s2[0]); var s3=null; if(tmpNum != "") { s3=tmpNum.split(","); } for(var j=0;j<temps;j++, ++n) { if(s3!=null) { var temp_num="*"+s3[j]; }else { var temp_num=""; } var arm_view_color=""; if(s2[12]=="1"){arm_view_color="bgcolor="+nosend;} if(n%splitnum == 0) { str += '<tbody id="page-'+(pagenum++)+'">'; } str += '<tr '+arm_view_color+'><td><input type="radio" name="adds" value="'+s2[0]+'"></td><td>'+s2[6]+'</td><td> '+s2[7]+'</td><td>'+s2[1]+'</td><td>'+s2[2]+'</td><td>'+s2[3]+'</td><td>'+s2[11]+'</td><td>'+s_status(s2[13])+'</td><td>力:'+s2[8]+' 速:'+s2[9]+' 智:'+s2[10]+'</td><td>'+s2[5]+temp_num+'</td><td>'+s2[4]+'</td><td><input type="radio" name="items" value="'+s2[0]+','+s2[5]+'"></td></tr>'; if(n%splitnum == splitnum - 1) { str += '</tbody>\n'; } } } if(n%splitnum !== 0) str += '</tbody>'; f.write(str); f.write('<tr><td colspan="12" ><input type="submit" value="裝備"> <input type="button" value="轉移" onClick="parent.foot_trun(\'arm\',\'move\',document.f1.pay_id.value,document.f1.item_num.value,document.f1.adds)"> <input type="button" value="販賣" onClick="parent.foot_trun(\'arm\',\'sale\',document.f1.pay_id.value,document.f1.item_num.value,document.f1.items)"> <input type="button" value="拍賣" onClick="parent.sale_item(document.f1.items)"></td></tr>'); f.write('<tr><td colspan="12" >請選擇數量:<select name="item_num">'); for(var j=1;j<10;j++) { f.write('<option value="'+j+'" >'+j+'</option>'); } f.write('</select>(使用轉移及販賣記得選擇道具數量)</td></tr>'); f.write('<tr><td colspan="12" >欲轉移需輸入對方遊戲的帳號 <input type="text" name="pay_id" size="16"></td></tr>'); f.write(temp_table2); f.write('<input type="hidden" name="f" value="arm">'); f.write('<input type="hidden" name="act" value="setup">'); // f.write('<input type="hidden" name="temp_id" value="'+temp_id+'">'); f.write('</form>'); if(showpager) { var str = ''; for(var i = 0, len = n/splitnum; i < len; ++i) { str += '<a href="javascript:parent.arm_show_page('+i+')">'+(i+1)+'</a> '; } f.getElementById('pager-box').innerHTML = str; arm_show_page(usepager? 0 : -1); } }
-
黑咪
-
- 文章: 161
- 註冊時間: 2007-12-24 11:23 am
- 性別: 男生
由 黑咪 » 2011-02-06 9:34 pm
感謝涅大新年期間也抽空來幫我解決問題
第一步我就先把這段碼直接放上去, 發現是不行 然後我把有改動的部份抽出來放進去, 發現有反應了 不過也是無法對同件物品作出數量計算
再之後我用不同的物品來作測試 發現能正常運作, 但在第2頁的第1個物品是NO.10的, 屬於正常嗎?
對了, 我將var pagebody = parent.wog_view.document.f1.childNodes[0].childNodes[0].childNodes; 修改成var pagebody = parent.wog_view.document.f1.childNodes[2].childNodes; 才有反應, 這是正常嗎><?
-
涅魂
-
- 文章: 4463
- 註冊時間: 2004-01-04 11:17 am
- 來自: Taiwan
- 性別: 男生
由 涅魂 » 2011-02-06 9:54 pm
我有變動的部份主要是在showpager這變數上面,你可以看一下這部份的程式碼 如果仍沒有解決你的問題的話,那就要請你再把問題描述得詳細些了,可以的話附上張問題的截圖能幫忙釐清你的問題 而pagebody的修改這與你的程式碼的結構有關,這行上面有個註解長這樣 - 代碼: 選擇全部
//f1 > div > table > tbody+thead+tfoot
這說明了我原先的pagebody的指向路徑,如果這跟你的程式的結構不同的話就需要修改。(你的程式應該不會有div這層)
|