Forum Webscript.Ru
Программирование => JavaScript & JScript => Тема начата: Night_Wolf от 22 Ноября 2007, 17:01:29
-
Приветствую,
Просвятите, плз, по какому косяку такая реализация не хочет работать (нужно удалить все строки таблицы)?
function TableClear()
{
var newElem = parent.document.getElementById("u_table");
for (var i=0; i{
newElem.deleteRow(i);
}
}
Строки удаляет, но оставляет одну строку с rowIndex=1.
-
Попробуйте
function TableClear()
{
var newElem = parent.document.getElementById("u_table").getElementsByTagName("TBODY")[0];
while(newElem.hasChildNodes())
{
newElem.removeChild(newElem.firstChild());
}
}
-
brainkiller , так вообще не хочет: "Команда не поддерживается объектом".
-
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]);
}
}
может как-нибудь так
-
hanslinger, спасибо за вариант. Но результат тот же, что и у моего начального - в таблице остаеться одна строка, хоть убей!
-
Вот что еще заметил: если функцию tableClear() запустить дважды, то удалит за второй заход оставшуюся строку. За раз не хочет ни в какую.
-
Night_Wolf
значит индексы рядов при удалении смещаются
ПОпробуй
function TableClear()
{
var newElem = parent.document.getElementById("u_table");
for (var i=0; i{
newElem.deleteRow(0);
}
}
-
andymc, идею понял, попробовал. Результат тот же.
Видимо действительно индексы рядов смещаються. Даже при принудительной установке индекса deleteRow глючит. Видать это какой-то баг ф-и DOM-а в самом Javascript. Еще заметил, что чем больше рядов в таблице, тем больше их остаеться после прогона через deleteRow.
Если б это еще обойти можна было?..
Пока думаю над альтернативой: поместить таблицу в DIV или SPAN, и удалять всю таблицу путем innerHTML. Правда потом придеться таблицу заново "рисовать", а это уже значительно трудо- и ресурсо-емней:(
-
Night_Wolf
Тебе немного подсказали в чем дело, осталось немного домыслить, и не какой это не глюк DOM. я б сказал где ошибка, только ты обидешся, если не понимаешь юмора.
Вот решение:
function TableClear()
{
var newElem = parent.document.getElementById("u_table");
for (var i=newElem.rows.length-1; i>=0; i--)
{
newElem.deleteRow(i);
}
}
-
Altaxar, ты прав. Да чего там обижаться:)
Выходит это все от того, что на изнанку прогонялось! Cам бы не додумал. Всем спасибо.
-
hanslinger
да, как-то не подумал. У меня в текущем проекте все таблицы имеют tbody и thead.