|
Добраться до tr из input и не потерять все)
Добрый день.
В продолжении темы. Сделал аналог для input.
var elems = document.querySelectorAll('input[value=""]');
elems.forEach(option => option.closest('tr').remove());
В итоге, удаляется самый первый <tr> и удаляет весь контент, как можно этого избежать? Можно ли по индексу например удалять все кроме 0 или как-то еще? Спасибо. |
А нельзя использовать .not(':eq(0)') для отбора?
нашел вот такую конструкцию:
Array.prototype.slice.call(document.querySelectorAll('input[value=""]'), 1)
.forEach(elt => elt.parentNode.remove(elt))
Лучше, но все равно нужная часть удаляется) Так. как class tr содержит tr_ , то решил вычленить по нему, в моем случае все отработало, как надо:
var elems = document.querySelectorAll('input[value=""]');
console.log(elems);
[].forEach.call(elems, function (el) {el.closest('[id*="tr_"]').remove();});
|
Цитата:
|
Спасибо.
Не получается, closest ищет родителя родителя и получается, что все рано удаляет все содержимое.
<tr> - вот это удаляем по факту, а не должны
<td>
<div>
<table>
<tbody>
<tr></tr>
<tr></tr>
<tr></tr>
<tr id="tr_"> <- а должно вот это
<td></td>
<td>
<div>
<input type="text" value=""> - ищем вот это
</div>
</td>
</tr>
</tbody>
</table>
</div>
</td>
</tr>
|
Цитата:
|
Должен ближайший <tr> вверх удаляться, в данном примере <tr id="tr_">, но мб и не быть id.
Наверное надо пояснить - в песочнице работает так, как должно. Пытаюсь применить на локалке, удаляет, что не нужно. Вроде поиск жесткий и все равно где-то, что-то не так. |
Цитата:
пробуйте
var elems = document.querySelectorAll('input[value=""]');
elems.forEach(input => input.closest('tr:last-child').remove());
|
В браузере вот такая ощибка.
Код:
Uncaught TypeError: Cannot read property 'remove' of null |
repz,
может у вас браузер устаревший или структура другая? здесь код ниже работает?
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
td{
border: 1px solid red;
}
</style>
</head>
<body>
<table><tr>
<td> - вот это удаляем по факту, а не должны
<div>
<table>
<tbody>
<tr><td>test</td></tr>
<tr><td>test</td></tr>
<tr><td>test</td></tr>
<tr id="tr_">
<td>del <- а должно вот это </td>
<td>
<div>
<input type="text" value=""> - ищем вот это
</div>
</td>
</tr>
</tbody>
</table>
</div>
</td>
</tr>
</table>
<script>
var elems = document.querySelectorAll('input[value=""]');
elems.forEach(input => input.closest('tr:last-child').remove());
</script>
</body>
</html>
|
Вот версия:
Код:
Последняя версия Google Chrome уже установленаУдаляется 2 -ой tr. <table> <tbody> <tr></tr> <tr> <-Вот этот удаляется, а не хотелось бы. <td> <div> <form> <div> <div> <div> <div> <table> <tbody> <tr> <td></td> <td> <table> <tbody> <tr> <td> <input name="" value="" size="30" type="text"><br> </td> </tr> </tbody> </table> </td> </tr> <tr> <td></td> <td> <select name="" size="1"> <option value="" selected="">(нет)</option> <option value="">123</option> </select> </td> </tr> </tbody> </table> </div> </div> </div> </div> </form> </div> </td> </tr> </tbody> </table> |
| Часовой пояс GMT +3, время: 23:02. |
|