0

我有一个n行数的表。n每分钟更改/更新的值。<td>每行的第一行要么包含一些文本,要么为空白。我想删除/删除除第一行和第一个单元格包含文本的行之外的所有行'xyz'。那么,我将如何做到这一点?该table元素存储在变量 中parentTable

我对javascript和编程有点陌生。任何帮助,将不胜感激。谢谢。

我只用第二行测试了它,但即使文本不在xyz单元格中,也没有发生任何事情。

if(parentNode.childNodes[1].innerText !== "xyz")
parentTable.deleteRow[1];

我如何循环每一行并做到这一点?

编辑:每行中第一个单元格的 HTML。

<td class=wbwhite align=center width=40 style="border-top: none; border-left:none; border-right:none;">
&nbsp;
<a href="www.kasdjfkasd.sadsdk.comi" class=pi>xyz</a>
&nbsp;
</td>
4

3 回答 3

1

试试这个:

    var table = parentTable;
    var rowCount = table.rows.length;

    for ( var i = 1; i < rowCount; i++ )
    {
        var row = table.rows[i];
        var val=  row.cells[0].childNodes[0].innerHTML.toString();

        if ( 'xyz' != val )
        {
            table.deleteRow( i );

            rowCount--;
            i--;
        }
    }
于 2013-03-20T12:07:50.200 回答
0

使用此代码(纯 JavaScript):

(假设表有 id = tableId)。

var all = document.querySelectorAll('#tableId > tbody > tr');

// i = 1 not i = 0 to keep the first row.
for (var i = 1; i < all.length; i++) {
    var td = all[i].querySelectorAll('td')[0];
    if ( td.textContent != "xyz" ) {
        all[i].parentNode.removeChild(all[i]);
    }
}
于 2013-03-20T12:07:11.270 回答
0

你可以试试这个

var allRows = parentTable.getElementsByTagName('TR');

for(var i=1; i<allRows.length;)
{
    var tr = allRows[i];
    var firstTd = tr.getElementsByTagName('TD')[0];
    if(firstTd.innerHTML !== 'xyz')
    {
        tr.parentNode.removeChild(tr);
    }else{
        i++;
    }
}
于 2013-03-20T12:13:53.187 回答