Автор Тема: Удаление строк таблицы (DOM)  (Прочитано 6732 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Night_Wolf

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 29
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Удаление строк таблицы (DOM)
« : 22 Ноября 2007, 17:01:29 »
Приветствую,

Просвятите, плз, по какому косяку такая реализация не хочет работать (нужно удалить все строки таблицы)?
	
 
function 
TableClear()
{
var 
newElem parent.document.getElementById("u_table");
    
	
 for (var 
i=0i<newElem.rows.lengthi++)
{  
	
 
	

newElem.deleteRow(i);  
	
 
}
}


Строки удаляет, но оставляет одну строку с rowIndex=1.

Оффлайн brainkiller

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 527
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Удаление строк таблицы (DOM)
« Ответ #1 : 22 Ноября 2007, 17:38:00 »
Попробуйте


function TableClear()
{
  var 
newElem parent.document.getElementById("u_table").getElementsByTagName("TBODY")[0];
  while(
newElem.hasChildNodes())
  {
    
newElem.removeChild(newElem.firstChild());
  }
}

Оффлайн Night_Wolf

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 29
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Удаление строк таблицы (DOM)
« Ответ #2 : 22 Ноября 2007, 17:49:24 »
brainkiller , так вообще не хочет: "Команда не поддерживается объектом".

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru
Удаление строк таблицы (DOM)
« Ответ #3 : 22 Ноября 2007, 17:56:10 »
brainkiller
tbody по дефолту выставляет только FF


function tableClear()
{
  var 
rows document.getElementById(\'tableId\').getElementsByTagName(\'tr\');
  for (var i = 0; i < rows.length; i++)
  {
    rows[i].parentNode.removeChild(rows[i]);
  }
}

может как-нибудь так

Оффлайн Night_Wolf

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 29
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Удаление строк таблицы (DOM)
« Ответ #4 : 22 Ноября 2007, 18:02:47 »
hanslinger, спасибо за вариант. Но результат тот же, что и у моего начального - в таблице остаеться одна строка, хоть убей!

Оффлайн Night_Wolf

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 29
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Удаление строк таблицы (DOM)
« Ответ #5 : 22 Ноября 2007, 18:16:20 »
Вот что еще заметил: если функцию tableClear() запустить дважды, то удалит за второй заход оставшуюся строку. За раз не хочет ни в какую.

Оффлайн andymc

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 400
  • +1/-0
  • 0
    • Просмотр профиля
Удаление строк таблицы (DOM)
« Ответ #6 : 22 Ноября 2007, 19:54:40 »
Night_Wolf
значит индексы рядов при удалении смещаются
ПОпробуй
function TableClear()
{
var 
newElem parent.document.getElementById("u_table");
         for (var 
i=0i<newElem.rows.lengthi++)
{           
newElem.deleteRow(0);       
}
}

Оффлайн Night_Wolf

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 29
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Удаление строк таблицы (DOM)
« Ответ #7 : 23 Ноября 2007, 01:09:51 »
andymc, идею понял, попробовал. Результат тот же.
Видимо действительно индексы рядов смещаються. Даже при принудительной установке индекса deleteRow глючит. Видать это какой-то баг ф-и DOM-а в самом Javascript. Еще заметил, что чем больше рядов в таблице, тем больше их остаеться после прогона через deleteRow.
Если б это еще обойти можна было?..

Пока думаю над альтернативой: поместить таблицу в DIV или SPAN, и удалять всю таблицу путем innerHTML. Правда потом придеться таблицу заново "рисовать", а это уже значительно трудо- и ресурсо-емней:(

Оффлайн Altaxar

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 222
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.moroseac.ru/
Удаление строк таблицы (DOM)
« Ответ #8 : 23 Ноября 2007, 10:12:40 »
Night_Wolf
Тебе немного подсказали в чем дело, осталось немного домыслить, и не какой это не глюк DOM. я б сказал где ошибка, только ты обидешся, если не понимаешь юмора.
Вот решение:

function TableClear()
{
var 
newElem parent.document.getElementById("u_table");
         for (var 
i=newElem.rows.length-1i>=0i--)
{           
newElem.deleteRow(i);       
}
}
Не все является тем чем кажется.

Оффлайн Night_Wolf

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 29
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Удаление строк таблицы (DOM)
« Ответ #9 : 23 Ноября 2007, 12:13:16 »
Altaxar, ты прав. Да чего там обижаться:)
Выходит это все от того, что на изнанку прогонялось! Cам бы не додумал. Всем спасибо.

Оффлайн brainkiller

  • Фанат форума
  • Ветеран
  • *****
  • Сообщений: 527
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Удаление строк таблицы (DOM)
« Ответ #10 : 23 Ноября 2007, 13:21:00 »
hanslinger
да, как-то не подумал. У меня в текущем проекте все таблицы имеют tbody и thead.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28