我尝试了一些不同的方法在表中查找列包含特定链接的行。
我的目标:当xyz的链接与图像位于同一行时,替换图标。
到目前为止,这是我的代码:
var rows = document.getElementsByTagName("tr");
for(var i = rows.length - 1; i >= 0; i--) {
var links = rows[i].getElementsByTagName("a");
for(var k = links.length - k; k >= 0; k--) {
if (links[k].href =="http://www.XXXX.net/forum/index.php?showforum=121"){
var images = rows[i].getElementsByTagName("img");
for (var j=0;j<images.length;j++) {
images[j].src = "http://www.XXXX.net/forum/folder_post_icons/icon7.gif";
}
}
}
}
我很确定这不是最好的概念。但正如您可能会看到我尝试搜索所有行中的链接,一旦找到论坛“121”的链接,我会尝试替换此特定行中的所有图像。
我得到的是网站上的每张图片都被替换了。
答案 0 :(得分:2)
因为它很简单,所以这是一个完整的脚本 它使用jQuery和a handy jQuery reference。请参阅选择器部分(与CSS选择器几乎相同)。
回复:"What I get is every image at the site getting replaced."
...
这可能是因为搜索条件过于宽泛。如果它是一个设计不佳(使用表格布局)页面,每个图像可能在一个表格行与目标链接!
在发布Greasemonkey问题时,链接到目标网页,或者至少发布足够的网页HTML,我们可以调整GM脚本以匹配。
无论如何,这将有效,可能还有关于目标页面的更多信息:
// ==UserScript==
// @name _Replace image on custom-targeted row
// @include http://www.XXXX.net/forum/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js
// ==/UserScript==
//--- This may need tuning based on information not provided!
var targetLinks = $("tr a[href*='showforum=121']");
//--- Loop through the links and rewrite images that are in the same row.
targetLinks.each ( function () {
//--- This next assumes that the link is a direct child of tr > td.
var thisRow = $(this).parent ().parent ();
//--- This may need tuning based on information not provided!
var images = thisRow.find ("td img");
//--- Replace all target images in the current row.
images.each ( function () {
$(this).attr (
'src',
'http://www.XXXX.net/forum/folder_post_icons/icon7.gif'
);
} );
} );