如何更改包含特定链接的背景颜色?

时间:2011-11-13 21:20:00

标签: javascript greasemonkey background-color tablerow

我想更改包含给定链接的“tr”元素的背景颜色。

我的片段:

var color1 = "red";
var targetForum = $("tr a[href*='showforum=28']");

targetForum.each ( function () {
    var thisRow = $(this).parent ().parent ().parent ();        
    thisRow.style.backgroundColor = color1;
}

我尝试了rgb值和十六进制,但bg颜色没有任何反应。

目标页面如下所示:

<tr>
    <td class="row2" align="center">
    <td class="row1" width="3%" align="center">
    <td class="row1">
    <td class="row1" width="15%">
        <span class="forumdesc">
            <a title="Off-Topic" href="showforum=41">ForumABC</a>
        </span>
    </td>
    <td class="row1" align="center">
    <td class="row2" align="center">
    <td class="row1" align="center">223460</td>
    <td class="row1">
</tr>

2 个答案:

答案 0 :(得分:1)

  1. 看起来你在这里使用jQuery,如何加载(通过论坛或GM)
  2. 论坛加载jQuery时,您必须使用unsafeWindow.$
  3. 访问jQuery
  4. parent()返回一个jQuery-Object,你不能使用obj.style设置jQuery-object的style-property,而是使用css()
  5. 我建议:(你不需要每个人)

    unsafeWindow.$("tr:not(:has(tr)):has(a[href*='showforum=28'])").css('backgroundColor','red');
    

答案 1 :(得分:0)

以jQuery方式设置样式(如前所述,thisRow是一个jQuery对象) 那将是:thisRow.css ('backgroundColor', color1);

然而,如果网站使用背景图片,颜色可能似乎不会生效。使用:

thisRow.css ('background', color1);

确保任何BG图像都不会掩盖颜色变化。

最后,该网站可能会设置表格单元格的BG样式,这可能会再次掩盖行颜色变化。要解决这个问题,请同时设置<td>元素的样式。

那就是:

targetForum.each ( function () {
    var thisRow = $(this).parent ().parent ().parent ();        
    thisRow.css ('background', color1);
    thisRow.find ("td").css ('background', color1);
}