Очистка динамической таблицы
В скрытом окне "dialog" есть таблица с заголовками, при открытии окна, в эту таблицу загружаются Аяксом данные, добавляя строки.
При каждом новом открытии этого окошка данные загружаются снова, так-как параметры загрузки меняются. При закрытии окна хорошо бы почистить таблицу, удалив добавленные к заголовкам строчки с данными. Пожалуйста, подскажите, как узнать кол-во строк в таблице и как удалить все строки после первой (строка с заголовками). В результате всяческой дури докатился вот до такого: for (var i = 1; i<document.getElementById('show_equipment').getElementsByTagName('tr').length; i++) { document.getElementById('show_equipment').deleteRow(i); } Но даже эта бредятина не удаляет все строчки... На JQUERY чо-то ничего путного не нашел, хотя, разумеется, всё это реализовано. ЗЫ: не стреляйте в пианиста - он играет как умеет! |
|
Veterinar,
for (; document.getElementById('show_equipment').getElementsByTagName('tr').length > 1; ) { document.getElementById('show_equipment').deleteRow(1); } |
рони, удалять весь узел для чего?
Насколько я читал в JS есть способ удаления строки: .deleteRow(i), где i - номер строки. Оно и удаляет, только никак не возьму в толк, почему не все строки? Подскажите пожалуйста! document.getElementById('show_equipment').getElementsByTagName('tr').length- возвращает правильное кол-во, а в цикле от 1 до кол-ва строк удаляются не все... |
Цитата:
<!DOCTYPE HTML> <html> <head> <title>Untitled</title> </head> <body> <table id="show_equipment"> <tr> <td>1</td> <td>1</td> </tr> <tr> <td>2</td> <td>2</td> </tr> <tr> <td>3</td> <td>3</td> </tr> <tr> <td>4</td> <td>4</td> </tr> <tr> <td>5</td> <td>5</td> </tr> </table> <script> for (var i = document.getElementById('show_equipment').getElementsByTagName('tr').length -1; i; i--) { document.getElementById('show_equipment').deleteRow(i); } </script> </body> </html> |
Veterinar,
length автоматически пересчитывается при удалении |
рони, спасибо!
Если честно, то не все понял, но постараюсь разобраться. Пока не понятно в связи с чем возникает проблема в четности-нечетности. |
рони, во как! Спасибо огромное!
|
var i = document.getElementById('show_equipment').getEleme ntsByTagName('tr').length -1;
На сколько помню, приведенная запись, работает по разному в разных браузерах, так, как в ней написано не взять числовое значение количества элементов при обходе и уменьшать на 1. Хотелось бы получить длину массива уменьшенную на единицу для получения индекса элемента массива на итерацию цикла, но по факту происходит уменьшения индекса самой коллекции... Такую ошибку браузеры по разному обрабатывают, кто то умалчивает и считает, как обход, а некоторые выдают ошибку или не правильно чето делают... Точно уже не помню, но когда то столкнулся сам с подобной проблемой при обходах в циклах с length -1, так, не учел, что у нас возвращается на самом деле при getElements не массив, а коллекция элементов и это немного разные вещи. С учетом попытки уменьшения индекса вызывало проблему в цикле, вот только не помню на каком браузере и всех деталей но доставило все же проблем... |
Цитата:
|
Цитата:
Ну вообщем, что могу еще добавить, только следующее. Предупреждены, значит вооружены... Сами решайте, прислушаться или проигнорировать проблему. |
Цитата:
Цитата:
|
рони,где вы нашли в коде уменьшение индекса коллекции???
document.getElementById('show_equipment').getEleme ntsByTagName('tr').length -1; document.getElementById('show_equipment').getEleme ntsByTagName('tr') возвращает не массив тегов, а HTMLCollection[.....] |
M-ka,
и какая связь в ваших предложениях? length то никак неизменяется!!! |
Цитата:
Я наступал на эти грабли, предупредил... хотите прислушивайтесь, хотите, нет... Факт остается фактом, проблема есть, варианты решения есть, то, что она вам не попадалась под руки, не значит, что ее нет. |
M-ka,пока ненайдёте браузер в котором document.write выдадут разные значения, ваши слова бред.
<html> <head> <title>Untitled</title> </head> <body> <table id="show_equipment"> <tr> <td>1</td> <td>1</td> </tr> <tr> <td>2</td> <td>2</td> </tr> <tr> <td>3</td> <td>3</td> </tr> <tr> <td>4</td> <td>4</td> </tr> <tr> <td>5</td> <td>5</td> </tr> </table> <script> document.write(document.getElementById('show_equipment').getElementsByTagName('tr').length); var i = document.getElementById('show_equipment').getElementsByTagName('tr').length -1; document.write(document.getElementById('show_equipment').getElementsByTagName('tr').length); </script> </body> </html> |
Часовой пояс GMT +3, время: 01:55. |