Basic Member
加入日期: Mar 2017
文章: 19
|
想問一個 userscript 的問題
我知道在這問程式問題很惷....但之前有人問過我也有幫忙回答下 XD
沒有其它程式論檀的帳號... 很不要臉的來這發問. 真的很不好意思 是這樣的, 我想在 firefox 上裝 Greasemonkey userscript 外掛, 當載入特定網頁時將 table 切成兩個 其中關鍵部份我一直稿不定. javascript 和我真的不是很熟, html 也只是基儲 原本的 CODE ... 上面的 code <TABLE width="370" align="center" border="0" style="font-size:7pt;font:bold"> ... 下面的 要在前面在插入 </td></tr></tbody></table><table><tbody><tr><td> 變成 </td></tr></tbody></table><table><tbody><tr><td><TABLE width="370" align="center" border="0" style="font-size:7pt;font:bold"> 看了很多 Greasemonkey 照著一篇寫了簡單的 user script var HTML = document.body.innerHTML; HTML = HTML.replace(/width="370"/ig, 'width="380"'); document.body.innerHTML = HTML; 可以成功的將 width="370" 換成 width="380" 但要是我括大一點 HTML = HTML.replace(/<TABLE width="370"/ig, '<TABLE width="380"'); 確又不行!! 頭疼呀. 晚點也去 stackoverflow 發問看看 = =! 有沒有大大可以提供解決方案 此文章於 2017-10-19 10:46 PM 被 MrSad 編輯. |
|||||||
2017-10-19, 10:44 PM
#1
|
Regular Member
加入日期: Sep 2002 您的住址: Earth
文章: 56
|
你的問題講得不清楚!這裡用你提供的code隨便寫一個把一個表切開的網頁,也許對你有參考價值!
下面的code存成~~~.html用瀏覽器執行!sorry沒有幫助的話 代碼:
<html> <head> </hread> <body> <button onclick="split_table();">切開</button> <TABLE width="370" align="center" border="0" style="font-size:7pt;font:bold;background-color:red;" > <tr><td>part1</td><td>part1</td><td>part1</td></tr> <tr><td>part1</td><td>part1</td><td>part1</td></tr> <tr><td>part1</td><td>part</td><td>part1</td></tr> <tr id="2"><td>part2</td><td>part2</td><td>part2</td></tr> <tr><td>part2</td><td>part2</td><td>part2</td></tr> <tr><td>part2</td><td>part2</td><td>part2</td></tr> </TABLE> </body> </html> <script> String.prototype.insert = function (index, string) { if (index > 0) return this.substring(0, index) + string + this.substring(index, this.length); else return string + this; }; function split_table(){ var HTML = document.body.innerHTML; var index = HTML.indexOf('<tr id="2">'); document.body.innerHTML = HTML.insert(index, '</TABLE><br><TABLE width="370" align="center" border="0" style="font-size:7pt;font:bold;background-color:yellow;" >'); } </script> |
||
2017-10-20, 01:24 AM
#2
|
Basic Member
加入日期: Mar 2017
文章: 19
|
引用:
喔喔! 抱歉! 沒把問題講清處 因為它 table 沒有 id 之類的東西可以抓到 elemenmt 之類的. 所以我單純的想用文字方式來處理. 找到 "TABLE width="370" align="center" border="0" style="font-size:7pt;font:bold">" 這段, 然後用 </td></tr></tbody></table><table><tbody><tr><td><TABLE width="370" align="center" border="0" style="font-size:7pt;font:bold"> 整段來取代. 簡單來講就是搜尋特定字串 html 內文並以另一段 html 內文取代 但 .replace 竟找不到 <TABLE width=370 這段. 因為我不是很熟 javescript ...我也不知道我卡在那邊 " |
|
2017-10-20, 02:18 AM
#3
|
Regular Member
加入日期: Sep 2002 您的住址: Earth
文章: 56
|
抓得到啊
只是更換部分字串就簡單了
不明白你為何抓不到? 代碼:
<html> <head> </hread> <body> <button onclick="toggle_width();">大小</button> <TABLE width="370" align="center" border="0" style="font-size:7pt;font:bold;background-color:red;" > <tr><td>part1</td><td>part1</td><td>part1</td></tr> <tr><td>part1</td><td>part1</td><td>part1</td></tr> <tr><td>part1</td><td>part</td><td>part1</td></tr> <tr><td>part2</td><td>part2</td><td>part2</td></tr> <tr><td>part2</td><td>part2</td><td>part2</td></tr> <tr><td>part2</td><td>part2</td><td>part2</td></tr> </TABLE> </body> </html> <script> var HTML = document.body.innerHTML; var change = false; function toggle_width(){ if(change = !change){ document.body.innerHTML = HTML.replace(/<TABLE width="370"/ig, '<TABLE width="380"'); }else{ document.body.innerHTML = HTML; } } </script> |
2017-10-20, 02:59 AM
#4
|
Regular Member
加入日期: Oct 2017
文章: 64
|
我個人傾向寫 <div id=""></div> 來做這樣的事情
如果可以使用 jQuery,還能將程式簡化,考慮一下 |
2017-10-20, 07:42 AM
#5
|
Basic Member
加入日期: Mar 2017
文章: 19
|
引用:
好的. 我在看一下. 謝謝 |
|
2017-10-20, 11:59 AM
#6
|
Basic Member
加入日期: Mar 2017
文章: 19
|
引用:
這也是我很疑惑的地方, 在 C 來看只是字串替換 不曉得為甚麼用 DOM 元件就不行 我在試試, 不行就貼 freelancer 找人代寫吧 = = |
|
2017-10-20, 12:01 PM
#7
|
Amateur Member
加入日期: Jun 2002 您的住址: 太陽系
文章: 32
|
我剛剛以雅虎首頁實驗是沒有問題的!
代碼:
var HTML = document.body.innerHTML; HTML = HTML.replace(/<TABLE class="W-100 M-0/ig, '<TABLE class="W-100 M-1'); document.body.innerHTML = HTML;
__________________
PCDVD站長:擋廣吿的後果就是導致免費網站無以為繼! 在你享受自由網路的同時 自私的行為只會扼殺這個環境。 |
2017-10-20, 03:47 PM
#8
|
Basic Member
加入日期: Mar 2017
文章: 19
|
引用:
疑!! 我也去試試!! |
|
2017-10-20, 04:30 PM
#9
|
Basic Member
加入日期: Mar 2017
文章: 19
|
var HTML = jQuery("body").html();
console.log(HTML); var src = '<table style="font-size:7pt;font:bold" width="370" border="0" align="center">'; var tag = '<\/td><\/tr><tr><td><table style="font-size:7pt;font:bold" width="370" border="0" align="center">'; HTML = HTML.replace(src, tag); jQuery("body").html(HTML); 我找到問題了... 右鍵 source code 看到的並不是真的完全和 server 送過來的一樣. 我猜可能是流覽器又順過一次 其中 <TABLE != <table 還有 " 和 ' 的問題 謝謝大家!! |
2017-10-20, 05:12 PM
#10
|