如何从表中删除特定行?

时间:2013-03-20 11:56:17

标签: javascript

我有一个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>

3 个答案:

答案 0 :(得分: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--;
        }
    }

答案 1 :(得分: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]);
    }
}

答案 2 :(得分: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++;
    }
}