Changing background cell of table depending on value

前端 未结 4 1393
北海茫月
北海茫月 2020-12-06 17:58

My site reads a XML file that contains information (values) for a data-table. I use CSS to style the table and everything works fine.

To get a better user-experience

相关标签:
4条回答
  • 2020-12-06 18:43

    It may be possible to do this using CSS expressions, but this is non-standard and IIRC only works in Internet Explorer. So I'd advise against it.

    Doing this server-side or using JavaScript are your best bets.

    0 讨论(0)
  • 2020-12-06 18:48

    This isn't possible with just CSS (though you can use JavaScript to assign classes to enable it to be partially implemented with CSS). To use plain JavaScript, rather than a library:

    var table = document.getElementById('tableID');
    var tbody = table.getElementsByTagName('tbody')[0];
    var cells = tbody.getElementsByTagName('td');
    
    for (var i=0, len=cells.length; i<len; i++){
        if (parseInt(cells[i].innerHTML,10) > 5){
            cells[i].style.backgroundColor = 'red';
        }
        else if (parseInt(cells[i].innerHTML,10) < -5){
            cells[i].style.backgroundColor = 'green';
        }
    }
    

    JS Fiddle demo.

    Or, to use CSS classes:

    var table = document.getElementById('tableID');
    var tbody = table.getElementsByTagName('tbody')[0];
    var cells = tbody.getElementsByTagName('td');
    
    for (var i=0, len=cells.length; i<len; i++){
        if (parseInt(cells[i].innerHTML,10) > 5){
            cells[i].className = 'red';
        }
        else if (parseInt(cells[i].innerHTML,10) < -5){
            cells[i].className = 'green';
        }
    }
    

    JS Fiddle demo.

    References:

    • className.
    • getElementById().
    • getElementsByTagName().
    • innerHTML.
    • parseInt().
    • style.
    0 讨论(0)
  • 2020-12-06 18:49

    Not to sure about css.I'll jump straight to jquery

    $('#mytable tr td').each(function(){
      if($(this).text() > 5)$(this).css('background-color','red');
    });
    
    0 讨论(0)
  • 2020-12-06 18:51

    without loop you can do it this way

    var val="ff";

    $("#grid td:contains('"+val+"')").css('background-color', 'red');

    0 讨论(0)
提交回复
热议问题