<!DOCTYPE html>
<html>
  <head>
    <script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
    <link href="https://nightly.datatables.net/css/jquery.dataTables.css" rel="stylesheet" type="text/css" />
    <script src="https://nightly.datatables.net/js/jquery.dataTables.js"></script>
    <meta charset=utf-8 />
    <title>DataTables - JS Bin</title>
  </head>
  <body>
    <div class="container">
      <br>
      <button id="addRow">Add new row</button>
      <table id="example" class="display nowrap" width="100%">
        <thead>
          <tr>
            <th>Name</th>
            <th>Price</th>
            <th>Qty</th>
            <th>Total</th>
          </tr>
        </thead>
        <tbody>
          <tr>
            <td>Seat</td>
            <td>690</td>
            <td>2</td>
            <td></td>
          </tr>
        </tbody>
      </table>
    </div>
  </body>
</html>
 
body {
  font: 90%/1.45em "Helvetica Neue", HelveticaNeue, Verdana, Arial, Helvetica, sans-serif;
  margin: 0;
  padding: 0;
  color: #333;
  background-color: #fff;
}
 
var table;
// Helper to be able to use multiple renderers
$.fn.dataTable.render.multi = function(renderArray) {
    return function(d, type, row, meta) {
        for(var r = 0; r < renderArray.length; r++) {
          if (typeof renderArray[r] === 'function') {
            d = renderArray[r](d, type, row, meta);
          }
          else if (typeof renderArray[r][type] === 'function') {
            d = renderArray[r][type](d, type, row, meta);
          }
          else {
            d = renderArray[r]._(d, type, row, meta);
          }
        }
        return d;
    };
};
// Helper to color negative amount
$.fn.dataTable.render.colorNegative = function ( data, type, row ) {
    if (data < 0) {
        return '<span style="color:' + 'red' + '">' + ata + '</span>';
    }
    return data;
};
function addRow(json) {
  var row = JSON.parse(json);
  table.row.add(row).draw();
}
$(document).ready( function () {
  
  table = $('#example').DataTable({
    "columns": [
      { "data": "name" },
      { "data": "price", render: $.fn.dataTable.render.multi(
        [
          $.fn.dataTable.render.number( ',', '.', 2),
          $.fn.dataTable.render.colorNegative
        ])
      },      { "data": "quantity" },
      { "data": null, render: function (data, type, row) { // null is to get all data for computing values, see "Computing values" section at https://datatables.net/manual/data/renderers#Functions 
          return ((data.price * data.quantity));
      }},      
    ],
  
  });
  
  var json = '{"name":"Discount", "price": -15, "quantity": 2, "total": ""}';
  
  $('#addRow').on( 'click', function () {
    addRow(json);
  });
          
  // Automatically add a first row of data
  $('#addRow').click();
} );
Output 300px

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers