|
Добраться до 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, время: 18:09. |
|