如果sum = 0,则隐藏表行和表列

时间:2014-05-17 16:08:39

标签: jquery

在jquery中,我找到了几种方法来恢复表中的所有值(tr>td),逐行对行进行求和,并使用sum=0隐藏行。

此外,我需要逐行(td)汇总所有td>tr值,如果sum=0,则隐藏列。

获得它的最短途径是什么?

更新 这是我目前的代码:

<table id='mytable' >
<tr><td>1</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>1</td><td>0</td><td>0</td><td>1</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>1</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
<tr><td>1</td><td>0</td><td>1</td><td>0</td><td>0</td><td>0</td><td>0</td><td>1</td><td>0</td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td><td>0</td></tr>
</table>
<input type='button' onclick='updateTotal()' value='row sum'>

<script>
function updateTotal() {
var table = document.getElementById('mytable');
for (var r = 0, n=table.rows.length ; r < n; r++) {
    mysum=0;
    for (var x = 0, y = table.rows[r].cells.length; x < y; x++) {
        mysum=mysum+parseFloat(table.rows[r].cells[x].innerHTML);
    }
    if(mysum==0)    alert((r+1)+" row hide it!");
}
for (var r = 0, n=table.rows[0].cells.length ; r < n; r++) {
    mysum=0;
    for (var x = 0, y = table.rows.length; x < y; x++) {
        mysum=mysum+parseFloat(table.rows[x].cells[r].innerHTML);
    }
    if(mysum==0)    alert((r+1)+" col hide it!");
}
}
</script>

1 个答案:

答案 0 :(得分:2)

我们假设您有以下HTML表格:

<table>
    <tr>
        <td>1</td><td>3</td><td>1</td>
    </tr>
    <tr>
        <td>1</td><td>3</td><td>1</td>
    </tr>
    <tr>
        <td>1</td><td>3</td><td>1</td>
    </tr>
    <tr>
        <td>1</td><td>3</td><td>1</td>
    </tr>
</table>

您可以通过我猜测与您处理行的方式非常相似的方式对列进行处理,这里是一些示例JavaScript(I&#34) ; m使用jQuery):

$(function(){

    var list = $("table tr td:nth-child(2)"); 
    var sum = 0;
    for(var l = 0; l<list.length; l++)
        sum += parseInt($(list[l]).text());

    if(sum == 12)
    {
        list.css('background-color', 'green');
        //list.hide();
    }
    else
        list.css('background-color', 'red');
});

JS小提琴:http://jsfiddle.net/dxDD8/

<强>更新

为了解决您的jQuery如何帮助您减少代码的问题:

  1. 我们以您的代码中的table.rows[r].cells[x].innerHTML为例。如果你想使用jQuery,你可以说$(&#34; #tableName tr td:nth-​​child(3)&#34;)。您需要使用rx变量构建字符串对象!