数据表:根据值更改单元格颜色

Amy*_*Amy 16 datatables

我正在使用DataTable来创建交互式表.我有9列,其中5列是值.我想根据具体情况更改每个单元格的背景颜色.

我开始试图首先改变整行颜色,因为这似乎是一个更容易的任务.但是,我无法改变任何事情.

我的代码如下:

    <head>  
    <link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.13/css/jquery.dataTables.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
    <script type="text/javascript" charset="utf8" src="//cdn.datatables.net/1.10.13/js/jquery.dataTables.js"></script>      

    <script>
        $(document).ready(function(){
            $('#countryTable').DataTable();
        });
    </script>

    <script>
        $(document).ready( function () {
        $('#countryTable ').DataTable({
            "fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
                if ( aData[3] > 11.7 )
                {
                    $(nRow).css('color', 'red')
                }
                else if ( aData[2] == "4" )
                {
                    $(nRow).css('color', 'green')
                }
            }
        });
    </script>

</head>

<body>      

    <table id ="countryTable" class="display" cellspacing="0" data-page-length='193'>
<thead>
    <tr>
        <th>Rank</th>
        <th>Country</th>
        <th>Code</th>
        <th>Total</th>
        <th>Beer</th>
        <th>Wine</th>
        <th>Spirits</th>
        <th>Other</th>
        <th>Score</th>
    </tr>
</thead>
<tbody>
    <tr>
        <td>1</td>
        <td>Estonia</td>
        <td>EE</td>
        <td>14.97</td>
        <td>5.87</td>
        <td>1.65</td>
        <td>5.64</td>
        <td>1.81</td>
        <td>3 - Medium Risky</td>
    </tr>
    <tr>
        <td>2</td>
        <td>Belarus</td>
        <td>BY</td>
        <td>14.44</td>
        <td>2.5</td>
        <td>0.75</td>
        <td>6.73</td>
        <td>4.46</td>
        <td>4 - Very Risky</td>
    </tr>

</tbody>
Run Code Online (Sandbox Code Playgroud)

我也试过使用以下功能,但没有运气.如果有人可以提供帮助,那将非常适合我,因为我非常喜欢java脚本.

$(document).ready( function () {
        $('#countryTable').DataTable({
            "fnRowCallback": function( nRow, aData, iDisplayIndex, iDisplayIndexFull ) {
                if ( aData[3] == "5" )
                {
                    $('td', nRow).css('background-color', 'Red');
                }
                else if ( aData[3] == "4" )
                {
                    $('td', nRow).css('background-color', 'Orange');
                }
            }
        });
Run Code Online (Sandbox Code Playgroud)

phi*_*ert 37

首先,DataTable只初始化一次.然后根据您的问题,使用rowCallback而不是fnRowCallBack如下所示:

var oTable = $('#countryTable').DataTable({ 
    'rowCallback': function(row, data, index){
    if(data[3]> 11.7){
        $(row).find('td:eq(3)').css('color', 'red');
    }
    if(data[2].toUpperCase() == 'EE'){
        $(row).find('td:eq(2)').css('color', 'blue');
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

这是一个小提琴