2013-03-20 5 views
0

У меня есть таблица с n количество строк. Значение n изменяется/обновляется каждую минуту. Первая строка <td> каждой строки будет содержать либо текст, либо будет пустой. Я хочу удалить/удалить все строки, кроме первой строки и строки, первая ячейка которой содержит текст 'xyz'. Итак, как я смогу это сделать? Этот элемент table хранится в переменной parentTable.Как удалить определенные строки из таблицы?

Я как бы новичок в javascript и программировании. Любая помощь будет оценена по достоинству. Благодарю.

Я тестировал его только во второй строке, но ничего не произошло, хотя текст не был xyz в ячейке.

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

И как мне обойти все строки и сделать это?

EDIT: 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

ответ

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. –

+0

xyz ....... Вы видели HTML? Могу ли я использовать row.cells [0] .childNodes [0] .innerHTML; вместо? –

+0

Я попытался и все строки были удалены :(и не предполагается ли это innerText? –

0

Используйте этот код (чистый JavaScript):

(предполагается, что таблица имеет идентификатор = 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++; 
    } 
} 
Смежные вопросы