Greasemonkey脚本用于查找具有特定条件的行

时间:2011-11-11 18:07:06

标签: image replace hyperlink greasemonkey

我尝试了一些不同的方法在表中查找列包含特定链接的行。

我的目标:当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”的链接,我会尝试替换此特定行中的所有图像。

我得到的是网站上的每张图片都被替换了。

1 个答案:

答案 0 :(得分:2)

因为它很简单,所以这是一个完整的脚本 它使用jQuerya 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'
        );
    } );
} );