2013-03-20 31 views
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> 
+0

哪裏是你的代碼?你有什麼嘗試? – DevelopmentIsMyPassion 2013-03-20 11:58:47

回答

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--; 
     } 
    } 
+0

xyz .......你看到了HTML嗎?我可以使用row.cells [0] .childNodes [0] .innerHTML;代替? – 2013-03-20 12:34:01

+0

我試過了,所有的行都被刪除:(並不是它應該是innerText? – 2013-03-20 12:41:12

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]); 
    } 
} 
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++; 
    } 
} 
相關問題