Print preview table

If all the td values are zero then, don't include in preview

by huday77

HTML

<table border="1" cellspacing="0">
    <tr>
        <th>Sl.No</th>
        <th>Value 1</th>
        <th>Value 2</th>
        <th>Value 3</th>
    </tr>
    <tr>
        <td>1</td>
        <td>5</td>
        <td>0</td>
        <td>2</td>
    </tr>
    <tr>
        <td>2</td>
        <td>7</td>
        <td>1</td>
        <td>4</td>
    </tr>
    <tr>
        <td>3</td>
        <td>1</td>
        <td>0</td>
        <td>10</td>
    </tr>
    <tr>
        <td>4</td>
        <td>8</td>
        <td>0</td>
        <td>3</td>
    </tr>
    <tr>
        <td>5</td>
        <td>13</td>
        <td>0</td>
        <td>6</td>
    </tr>
</table>
<br/>
<input type="button" value="Print Preview" onclick="printpage()" />

JavaScript

function printpage() {
    var printableTable = $("table").clone();
    var columnLen = printableTable.find("tr:nth-child(1)").find("th").size();
    
    for(var i=1; i<=columnLen; i++){
        var sum = 0;
        printableTable.find("tr td:nth-child("+i+")").each(function(){ 
            var nr = Number($(this).html());
            sum += nr;
        });
        
        if (sum == 0)
        {
            printableTable.find("tr th:nth-child("+i+")").each(function() {
                $(this).hide();
            });
           
            printableTable.find("tr td:nth-child("+i+")").each(function() {
                $(this).hide();
            });
        }
    }
    
    var data = '<table border="1" cellspacing="0"><tr><td colspan="4">Sample Report</td></tr>' + 
        printableTable.html()
    + '</table>';
    data += '<br/><button onclick="window.print()"  class="noprint">Print the Report</button>';
    data += '<style type="text/css" media="print"> .noprint {visibility: hidden;} </style>';
    myWindow = window.open('', '', 'width=800,height=600');
    myWindow.innerWidth = screen.width;
    myWindow.innerHeight = screen.height;
    myWindow.screenX = 0;
    myWindow.screenY = 0;
    myWindow.document.body.innerHTML = data;
    myWindow.focus();
}