这里的另一个可怜的灵魂无法在Tampermonkey / Greasemonkey中进行文本替换的正面或反面。我正在处理一系列表格行:
<table class="table table-striped table-hover">
<tr>
[a bunch of header cells]
</tr>
<tr>
<td>412</td>
<td>An image</td>
<td>A thing</td>
<td>A person</td>
<td>A place</td>
</tr>
<tr>
<td>3789</td>
<td>An image</td>
<td>A thing</td>
<td>A person</td>
<td>A place</td>
我想要的是将每个数字转换为此表单的链接:
<td><a href="https://mydomain.com/workflow/index.html?
endrun=1&submit=Edit&record=3789">3789</a></td>
(?之后的换行符恰好在这里适合页面; URL中不应该有实际的换行符。)
表格中有多行;每一个都以我想要链接的数字开头。在网站的某些页面上,该数字是每行中的第三个或第四个项目,而不是第一个。每个页面只有一个表。我不想更改标题行中的第一个单元格,因为这些单元格已经可以点击并用于排序,我也不想链接任何单词 - 只是数字。
我查看了Most concise way to do text replacement on a web page? (using GreaseMonkey)和How to create links from existing text in Greasemonkey?以及Greasemonkey: Add a link in a table和http://www.overclock.net/t/487779/help-with-greasemonkey-and-regular-expressions,但我无法弄清楚如何让任何建议的答案适用于我情况。 (我在Chrome中运行Tampermonkey,但希望Greasemonkey的答案对我有用。)我会谦卑地感谢任何帮助。
答案 0 :(得分:3)
这应该用于tampermonkey。
只需要将命名空间更新为您希望它运行的命名空间。 如果该站点已经使用了jQuery,那么您也可以抛弃require属性。
// ==UserScript==
// @name Updator
// @namespace http://stackoverflow.com/
// @version 0.1
// @description enter something useful
// @match http://*/*
// @copyright 2012+, You
// @require http://code.jquery.com/jquery-2.1.1.min.js
// ==/UserScript==
$(document).on("ready", function() {
$("table.table-striped td:first-child").each(function(e, i){
var this$ = $(this);
var q = this$.html()
if (/^\d+$/ig.test(q)){
this$.html("<a href='https://mydomain.com/workflow/index.html?endrun=1&submit=Edit&record=" + q + "' >" + q + "</a>");
}
});
});
&#13;
答案 1 :(得分:0)
如果你不使用jQuery,你也可以这样做:
var cells = [];
var coll1 = document.getElementsByTagName('TH');
var coll2 = document.getElementsByTagName('TD');
for (var i = 1; i < coll1.length; i++) {
cells.push(coll1[i]);
}
for (var i = 0; i < coll2.length; i++) {
cells.push(coll2[i]);
}
for (var i = 0; i < cells.length; i++) {
var cellValue = cells[i].innerHTML;
var number = cellValue.match(/\d+/)[0];//get first number in a cell
cells[i].innerHTML = cellValue.replace(/\d+/, '<a href="https://mydomain.com/workflow/index.html?endrun=1&submit=Edit&record=' + number + '">' + number + '</a>');
}
修改强> 使用了您的链接