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. 最初のコード ブロックは、行やセルではなくbackgroundColor、(複数回) を設定しています。tbody
  2. および同様のスタイルは、より高いSpecificity.teamStandings tr.rowOne tdを持っているため、最初のコード ブロックをオーバーライドします。
  3. 2 番目のコード ブロックには、最初のコード ブロックと同じ問題があります。
    さらに:
  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');
    }
} );

現在、サンプルページでは、該当する結果はトリノのアウェイゲームのみです。


PS:値をパーセンテージに変換するコードの前にこのコードを配置/実行しますが、これは機能していて表示されませんでした。

于 2013-01-18T23:36:03.773 に答える
1

background-colorコードでは、要素に を設定しましたtr
ページ上の CSS は、tr 内の要素 background-colorに対して を設定しています。td

tdしたがって、要素ではなく同じ要素trをターゲットにする必要があります

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

2 番目のコード ブロックで

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

if 条件で、orキーワードはタイプミスですか?

于 2013-01-16T13:44:14.503 に答える