我想隐藏特定单元格的表行

I want to hide table row of particular cells

本文关键字:单元格 隐藏      更新时间:2023-09-26

我创建了一个脚本,用于隐藏包含特定单词的行,在我的情况下,该单词是"活动的"。现在的问题是脚本只隐藏第一行,然后停止执行。所以基本上它是有效的,但是在隐藏第一行之后,它就停止执行了。

任何建议都欢迎

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript" charset="utf-8"></script>
</head>
<body>
   <table id="myTable">
     <tr id="my">
            <td>1</td>
            <td>11</td>
            <td >active</td>
        </tr>
     <tr  id="my">
            <td>2</td>
            <td>22</td>
            <td>active</td>
        </tr>
        <tr  id="my">
            <td>4</td>
            <td>44</td>
            <td>inactive</td>
        </tr>
        <tr  id="my">
            <td>5</td>
            <td>55</td>
            <td>inactive</td>
        </tr><tr  id="my">
            <td>6</td>
            <td>66</td>
            <td>active</td>
        </tr>
        <tr  id="my">
            <td>7</td>
            <td>77</td>
            <td>inactive</td>
        </tr>
    </table>
<script>
var oTable = document.getElementById('myTable');
var row = "active";
var count=0;
var rowLength = oTable.rows.length;
//document.writeln("no fo row in table"+rowLength); 
    for (var i = 0; i < rowLength; i++)
    {
        var oCells = oTable.rows.item(i).cells;
         var cellLength = oCells.length;
         //document.writeln(count);
         count=count+1;    
         for(var j = 0; j < cellLength; j++)
            {
                var cellVal = oCells.item(j).innerHTML;     
            //  document.writeln("table values"+cellVal);
                 if(cellVal==row)
                     {
                                document.getElementById('my').style.display = 'none'; 
                                document.writeln("table values"+count+"<br/>");                             
                     }  
                else
                    {
                    }
                }
    }
</script>
$('#myTable tr').each(function() {
    var st = $(this).find("td:last").html();    
    if(st!='active'){
    $(this).hide();
    }
});

尽管您已经接受了一个答案,但我还是建议您:

$('#myTable tr').filter(function(){
    return $(this).find('td:last-child').text().toLowerCase() === 'active';
}).hide();

JS Fiddle演示。

关于你的进一步问题(在对另一个答案的评论中):

只要一个想法就可以帮助我,如果有更多的单词像active,enable,disable我必须比较一下代码像是怎么回事

我建议采用以下方法:

var states = {
    'active' : {
        'display' : 'none'
    },
    'inactive' : {
        'color' : 'orange'
    }
};

$('#myTable tr td:last-child').each(function(){
    var that = this,
        $that = $(that);
    $that
     .parent()
     .css(states[$that.text().toLowerCase()] || '');
});

JS Fiddle演示。