1

jQuery を使用せずに、JavaScript または CSS で代替関数を見つけて css をシミュレートするにはどうすればよいでしょうか。

table#report tr:nth-child(odd) { background-color:#eeeeee; }

table#report tr:nth-child(even){ background-color:#ffffff; }

私は途方に暮れており、上記の回避策を見つけなければなりません。

4

5 に答える 5

4

私の場合、これを実行しましたが、問題なく動作します

var aTr = document.getElementsByTagName("tr");
for(var i=0, ii=aTr.length; i<ii; i++){
    if(i%2!=0){
        aTr[i].style.backgroundColor = "#eeeeee";
    }else{aTr[i].style.backgroundColor = "#ffffff";}
}
于 2012-11-05T16:52:37.363 に答える
1

これは、javascript と css クラスを使用したソリューションです。

JS:

var children = document.getElementById('report').getElementsByTagName('tr');

for (var i=0, len=children.length; i<len; i++) {
  var child = children[i];
  if (i%2 === 0) {
    child.className += " even";
  } else {
    child.className += " odd";
  }
}​

CSS:

table#report tr.even {
    background: #F00; /*or the color of your choice*/
}

table#report tr.odd {
    background: #00F; /*or the color of your choice*/
}

jsfiddle デモ: http://jsfiddle.net/rNTH8/2/

于 2012-11-05T17:02:30.837 に答える
1

基本的な JavaScript で問題ないと仮定すると、機能的なアプローチとして次のことをお勧めします。

function oddEven(table) {
    if (!table) {
        return false;
    }
    else {
        table = table.nodeType == 1 ? table : document.getElementById(table);
        var rows = table.getElementsByTagName('tr');
        for (var i=0, len=rows.length; i<len; i++) {
            rows[i].className = i%2 == 0 ? 'even' : 'odd';
        }
    }
}

oddEven('tableID');
oddEven(document.getElementById('tableID'));

JS Fiddle デモ:oddEven('tableID'); .

JS Fiddle デモ:oddEven(document.getElementByID('tableID')); .

の行にのみ適用されるように上記の関数を修正しましたtbody

function oddEven(table) {
    if (!table) {
        return false;
    }
    else {
        table = table.nodeType == 1 ? table : document.getElementById(table);
        var rows = table.getElementsByTagName('tbody').length ? table.getElementsByTagName('tbody')[0].getElementsByTagName('tr') : table.getElementsByTagName('tr');
        for (var i=0, len=rows.length; i<len; i++) {
            rows[i].className = i%2 == 0 ? 'even' : 'odd';
        }
    }
}

JS Fiddle デモ:oddEven('tableID'); .

JS Fiddle デモ:oddEven(document.getElementByID('tableID')); .

于 2012-11-05T16:54:59.623 に答える
0

回避策は、出力で交互のクラス名を使用することです。マークアップサーバー側を変更したくない場合は、jQueryを使用して実行時にこれらを適用できます。

于 2012-11-05T16:52:50.170 に答える
0

JQueryを使用すると、これは問題なく実行できます

そのように:

$('#report tr:nth-child(2n+1)').addClass('odd');
于 2013-10-26T03:27:50.973 に答える