Удаление строк в таблице со значением 0

137
20 февраля 2019, 13:10

Есть таблица, которая с каждым годом автоматически расширяется.

Задача: надо взять все tr из данной таблицы и в каждой строке таблицы взять все td, кроме первого td и второго td (Это значения "Наименование пункта"). После удалить, где значения только нули во всей строке. (значения 0 X Y считается нормой)

<table>
<tr>
    <td>Наименование пункта</td>
    <td>Наименование пункта</td>
    <td>0</td>
    <td>12 000</td>
    <td>24 000</td>
</tr>
<tr>
    <td>Наименование пункта</td>
    <td>Наименование пункта</td>
    <td>0</td>
    <td>0</td>
    <td>0</td>
</tr>
<tr>
    <td>Наименование пункта</td>
    <td>Наименование пункта</td>
    <td>0</td>
    <td>12 000</td>
    <td>24 000</td>
</tr>
<tr>
    <td>Наименование пункта</td>
    <td>Наименование пункта</td>
    <td>0</td>
    <td>0</td>
    <td>0</td>
</tr>
<tr>
    <td>Наименование пункта</td>
    <td>Наименование пункта</td>
    <td>0</td>
    <td>12 000</td>
    <td>24 000</td>
</tr>

Пояснение: Удалить строки tr, где все значения 0 0 0, кроме первого td и второго td (значение с 0 0 0 могут оказаться на любой строке);

Пробовал через поиск, что-то не выходит. Через map перебрать массив, тоже не вышло. Подскажите, как можно отследить у таблицы строки, где значения 0 0 0 и удалить их?

$(document).ready(function () {
   var aa = $('#finance-Table tr');
                for (i = 0; i <= aa.length; i++) {
                    var bb = aa[i].find('td:not(:first-child, :nth-child(2))');
                    if (bb.text() == "0 0 0") {
                        aa[i].remove();
                    }
                }
)};

Я так понимаю, что метод find находит лишь первый элемент и проблема скорее всего в этом

Answer 1

Если я правильно понял Вашу задачу (а именно - удаление ячеек со значением "0 0 0"), то решается она элементарно: проходите по всем ячейкам, находите те, где 0 0 0, и удаляете.

В решение я добавил setTimeout для наглядности:

setTimeout( function() { 
  $('td').each(function(){ 
    if($(this).text() == '0 0 0') { 
      //$(this).remove(); 
      $(this).closest("tr").remove(); 
    } 
  }); 
}, 3000);
table { 
  border-collapse: collapse; 
} 
td { 
  padding: 5px; 
  border: 1px solid black; 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<table> 
<tr> 
    <td>Наименование пункта</td> 
    <td>Наименование пункта</td> 
    <td>0</td> 
    <td>12 000</td> 
    <td>24 000</td> 
</tr> 
<tr> 
    <td>Наименование пункта</td> 
    <td>Наименование пункта</td> 
    <td>0 0 0</td> 
    <td>0</td> 
    <td>0</td> 
</tr> 
<tr> 
    <td>Наименование пункта</td> 
    <td>Наименование пункта</td> 
    <td>0</td> 
    <td>12 000</td> 
    <td>24 000</td> 
</tr> 
<tr> 
    <td>Наименование пункта</td> 
    <td>Наименование пункта</td> 
    <td>0</td> 
    <td>0 0 0</td> 
    <td>0</td> 
</tr> 
<tr> 
    <td>Наименование пункта</td> 
    <td>Наименование пункта</td> 
    <td>0</td> 
    <td>12 000</td> 
    <td>24 000</td> 
</tr> 
</table>

Answer 2

Насколько я понял из вопроса, автору нужно удалить строку. В ответе @humster_spb, если удалить только ячейки, то верстка таблицы поедет. Нужно удалить строку, которая содержит эту ячейку.

$(this).closest("tr").remove();

Прошу прощения, исправил имя автора давшего ответ

READ ALSO
Использование функции как объекта

Использование функции как объекта

Читаю учебник по JavaScriptСказано: "Функция в JavaScript является объектом, поэтому можно присваивать свойства прямо к ней, вот так:"

120
Как изменить цвет div через js

Как изменить цвет div через js

Есть вот такие дивы <html>

165