1

我正在为此页面创建一个 Greasemonkey 脚本。

我想要做的是将赢得、平局和输掉比赛的所有值更改为他们的百分比得分,并突出显示主队或客队得分的百分比得分等于或超过 70%的DRAWN单元格(或行) .

我设法完成了第一部分,但我在尝试突出显示一个单元格或一行时遇到了很多麻烦。

首先我尝试了这段代码

$('.teamStandings tbody tr').each(function() {
    $(this).parent().css('backgroundColor', '#EFEF00');
});

实际上选择了所有行;但是直到我通过Firebug从 CSS 禁用这部分代码之前,我看不到任何区别:

.teamStandings tr.rowOne td {
  background-color: #EEEEEE;
}

所以我想让这个工作,每次我浏览页面时都覆盖原始 CSS 并开始工作一个更复杂的方案:

$('.teamStandings tbody tr').each(function() {
  var x1=parseInt($cells.eq(8).text(),10) ;
  var x2=parseInt($cells.eq(9).text(),10) ;
  var x3=parseInt($cells.eq(10).text(),10) ;

  var y1=parseInt($cells.eq(11).text(),10) ;
  var y2=parseInt($cells.eq(12).text(),10) ;
  var y3=parseInt($cells.eq(13).text(),10) ;      


  if ((x2/(x1+x2+x3))*100 >= 70) or (y2/(y1+y2+y3))*100 >= 70)
      $(this).parent().css('backgroundColor', '#EFEF00');
});

可悲的是,这根本不起作用。

4

2 回答 2

4

有多个问题:

  1. 第一个代码块是设置backgroundColortbody多次)的,而不是任何行或单元格。
  2. 和类似的.teamStandings tr.rowOne td样式会覆盖第一个代码块,因为它们具有更高的Specificity
  3. 第二个代码块与第一个代码块有相同的问题。
    此外:
  4. $cells在没有定义的情况下使用!
  5. if()语法错误;or不是有效的运算符。
  6. 使用有意义的变量名,并使用变量而不是“幻数”(70)。

总而言之,这段代码突出显示了超过 70% 的游戏被绘制的Drawn单元格:

var highlightPercent    = 70;

$('.teamStandings tr').each ( function () {
    var columns     = $(this).find ('td');

    var homeWon     = parseInt (columns.eq( 8).text(), 10) ;
    var homeDraw    = parseInt (columns.eq( 9).text(), 10) ;
    var homeLoss    = parseInt (columns.eq(10).text(), 10) ;

    var awayWon     = parseInt (columns.eq(11).text(), 10) ;
    var awayDraw    = parseInt (columns.eq(12).text(), 10) ;
    var awayLoss    = parseInt (columns.eq(13).text(), 10) ;

    if (homeDraw * 100 / (homeWon + homeDraw + homeLoss)  >= highlightPercent) {
        //-- To highlight the whole row, uncomment the next line.
        //columns.css ('backgroundColor', 'pink');
        columns.eq( 9).css ('backgroundColor', '#EFEF00');
    }

    if (awayDraw * 100 / (awayWon + awayDraw + awayLoss)  >= highlightPercent) {
        //-- To highlight the whole row, uncomment the next line.
        //columns.css ('backgroundColor', 'pink');
        columns.eq(12).css ('backgroundColor', '#EFEF00');
    }
} );

目前,在示例页面上,唯一适用的结果是Torino,客场比赛。


PS:您可以在将值转换为百分比的代码之前放置/运行此代码,您说该代码有效但未显示。

于 2013-01-18T23:36:03.773 回答
1

在您的代码中,您已经background-colortr元素设置了 。
虽然页面上的 CSS 正在为tr background-color中的元素设置td

所以你应该定位相同的td元素而不是tr元素

$('.teamStandings tbody tr td').each(function() {
    $(this).css('backgroundColor', '#EFEF00');
});

在您的第二个代码块中

if ((x2/(x1+x2+x3))*100 >= 70) or (y2/(y1+y2+y3))*100 >= 70)

在 if 条件下,or关键字是不是拼写错误?

于 2013-01-16T13:44:14.503 回答