Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Скорость работы insertCell (Денис В.)
Author Message
Денис В.
Участник форума



Joined: 24 Jun 2007
Posts: 36
Карма: 0
   поощрить/наказать


PostPosted: Wed Aug 19, 2009 9:52 am (написано за 9 минут 20 секунд)
   Post subject: Скорость работы insertCell
Reply with quote

Здравствуйте уважаемые специалисты. Разрабатываю большое Ajax приложение. Одним из ключевых аспектов скрипта - это формирование таблицы. Формирую ее и наполняю данными через JS из массива, который предварительно создаю из данных с сервера. Данные в таблице можно редактировать(что не так важно).

Вид таблицы ниже


Проблема в следующем - при добавлении столбца через JS программа начинает тормозить. Firefox "думает" 5-7 секунд и только потом добавляет столбец, IE думает, а затем предлагает "остановить выполнение скрипта", но таблицу в итоге отрисовывает. Я проверил ф-ии которые отвечают за добавление содержимого таблицы, никаких задержек там не происходит, а торможения происходят при выполнении var cell = row.insertCell(t), при большом количестве строк в таблице(их кол-во так же меняется).

Внимание вопрос: как можно ускорить формирование таблиц, использовать какую-то другую функцию? можно ли применять CSS для добавления строчек, столбцов, ячеек? Если да, то как?

Заранее спасибо
Back to top
View user's profile Send private message
Cr@ZyBoY
Guest





Карма: 388
   поощрить/наказать


PostPosted: Wed Aug 19, 2009 10:47 am (спустя 55 минут; написано за 2 минуты 48 секунд)
   Post subject:
Reply with quote

Через DOM-методы:
Code (JavaScript): скопировать код в буфер обмена
var trs = document.getElementsByTagName("tr");
for (var i = 0; i < trs.length; i++) {
        var ntd = document.createElement("td");
        trs[i].appendChild(ntd);
}
Что-то вроде этого. Самому не приходилось создавать таблицы таким образом, но принцип такой.
А CSS используют для оформления элементов, но никак не создания их.
Back to top
Денис В.
Участник форума



Joined: 24 Jun 2007
Posts: 36
Карма: 0
   поощрить/наказать


PostPosted: Wed Aug 19, 2009 12:09 pm (спустя 1 час 22 минуты; написано за 22 секунды)
   Post subject:
Reply with quote

спасибо за ответ. попробую сегодня!
Back to top
View user's profile Send private message
dimagolov
Участник форума



Joined: 04 Feb 2007
Posts: 1664
Карма: 96
   поощрить/наказать

Location: Christ Church, Barbados

PostPosted: Wed Aug 19, 2009 3:35 pm (спустя 3 часа 25 минут; написано за 1 минуту 40 секунд)
   Post subject:
Reply with quote

Quote:
Формирую ее и наполняю данными через JS из массива, который предварительно создаю из данных с сервера
есть альтернативы. таблицу формировать на сервере в виде html и отображать ее в iframe. или не добавлять столбцы, а сформировать максимально полную таблицу а потом классами стилей скрывать и показывать строки/столбцы.
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Wed Aug 19, 2009 4:05 pm (спустя 30 минут; написано за 31 секунду)
   Post subject:
Reply with quote

Быстрее всего - генерить виртуальную таблицу через innerHTML и перебрасывать строчки в реальную через appendChild.
Back to top
View user's profile Send private message
Денис В.
Участник форума



Joined: 24 Jun 2007
Posts: 36
Карма: 0
   поощрить/наказать


PostPosted: Fri Aug 21, 2009 3:41 pm (спустя 1 день 23 часа 35 минут; написано за 1 минуту 8 секунд)
   Post subject:
Reply with quote

Спасибо за хорошие ответы! Сделаю через innerHTML и 1й метод попробую(еще не успел). Если буду использовать innerHTML, да простят мне следующие программисты, кто будет работать над проектом качество кода :)
Back to top
View user's profile Send private message
WingedFox
Профессионал



Joined: 29 Apr 2003
Posts: 4064
Карма: 268
   поощрить/наказать

Location: Питер

PostPosted: Fri Aug 21, 2009 4:06 pm (спустя 24 минуты; написано за 1 минуту 32 секунды)
   Post subject:
Reply with quote

Денис В.
innerHTML - вполне себе валидное решение, да и самое быстрое. Так что, правильно оформите и задокументируйте процесс создания строчек - и будет однозначное счастье. А уж как внутри работает фабрика поставляющая эти строчки - дело десятое. Главное чтобы быстро и аккуратно.
Back to top
View user's profile Send private message
Денис В.
Участник форума



Joined: 24 Jun 2007
Posts: 36
Карма: 0
   поощрить/наказать


PostPosted: Mon Aug 24, 2009 12:47 pm (спустя 2 дня 20 часов 40 минут; написано за 3 секунды)
   Post subject:
Reply with quote

Спасибо за ответы!

Вопрос решен, тему можно закрыть.
Back to top
View user's profile Send private message
Александр Михалицын
Модератор



Joined: 23 May 2008
Posts: 1299
Карма: 83
   поощрить/наказать


PostPosted: Mon Aug 24, 2009 1:12 pm (спустя 24 минуты)
   Post subject:
Reply with quote


М

Тема закрыта.
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   This topic is locked: you cannot edit posts or make replies. All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML