repz,
вы что-то не договариваите ... сделана задержка удаления для наглядности <!DOCTYPE html> <html> <head> <title>Untitled</title> <meta charset="utf-8"> <style type="text/css"> .test td{ border: 1px solid red; } </style> </head> <body> <table> <tbody> <tr></tr> <tr> <td> <-Вот этот удаляется, а не хотелось бы. <div> <form> <div> <div> <div> <div> <table> <tbody> <tr> <td></td> <td> <table> <tbody> <tr class="test"> <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> <script> var elems = document.querySelectorAll('input[value=""]'); window.setTimeout(_ => elems.forEach(input => input.closest('tr:last-child').remove()), 3000); </script> </body> </html> |
) Честно, я вижу, что код работает и работает на jsf..., запускаю в браузере последний код там ошибка, если его же без "last-child", то удаляет <TR> второй в разметке и вместе с ним все.
Искал может есть какие-то input скрытые с value="" - не нашел. |
repz,
может в структуре html ошибки? а так? var elems = document.querySelectorAll('tr input[value=""]'); elems.forEach(input => input.closest('tr:last-child').remove()); |
Да, вроде нет и в отбор попадает то. что нужно удалить.
Но по факту почему-то сносится еще и нужный <tr>. Вот прогнал на соответствие и нет это <tr> в найденом, а почему сносит не знаю. Вот структура так если бы все было на месте: <table> <tbody> <tr></tr> <tr> <-Вот этот удаляется, а не хотелось бы. <td> <div> <form> <div> <div> <div> <div> <table> <tbody> <tr> <td></td> <td> <table> <tbody> <tr> <td> <tr id="tr_ACTIVE_FROM"> <td></td> <td> <div> <input type="text" name="ACTIVE_FROM" size="22" value=""> <span></span> </div></td> </tr> <tr id="tr_ACTIVE_TO"> <td></td> <td> <div> <input type="text" name="ACTIVE_TO" size="22" value=""> <span ></span> </div></td> </tr> </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> |
repz,
код пробовали из #13? |
Да, он не заводится, как и предыдущий.
|
repz,
могу только гадать, что у вас и как ... |
Да все стандартно, вот еще заметил забавный глюк:
То есть если console.log(el.closest('[id*="tr_PROPERTY_"]')) то ловит все как надо, а если el.closest('[id*="tr_PROPERTY_"]').remove() то ошибка и не выполняется |
Не стал редактировать предыдущее.
Ругается на remove значит не может найти что удалить, т.е. в предыдущем underfined. И вот что нашел: после выполнения var elems = document.querySelectorAll('input[value=""]');if (elems.length > 0) { [].forEach.call(elems, function (el) {console.log(el.closest('[id*="tr_PROPERTY_"]')) });} Может это как-то поможет. И еще вопрос, откуда там null вообще? |
Цитата:
|
Часовой пояс GMT +3, время: 16:00. |