Есть таблица, которая с каждым годом автоматически расширяется.
Задача: надо взять все 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 находит лишь первый элемент и проблема скорее всего в этом
Если я правильно понял Вашу задачу (а именно - удаление ячеек со значением "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>
Насколько я понял из вопроса, автору нужно удалить строку. В ответе @humster_spb, если удалить только ячейки, то верстка таблицы поедет. Нужно удалить строку, которая содержит эту ячейку.
$(this).closest("tr").remove();
Прошу прощения, исправил имя автора давшего ответ
Виртуальный выделенный сервер (VDS) становится отличным выбором
Читаю учебник по JavaScriptСказано: "Функция в JavaScript является объектом, поэтому можно присваивать свойства прямо к ней, вот так:"