我有一个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;">
<a href="www.kasdjfkasd.sadsdk.comi" class=pi>xyz</a>
</td>
答案 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++;
}
}