Здравствуйте, sss4372, Вы писали:
S>У меня следующая проблема.
S>Создаю динамически большую таблицу с ячейками, в каждой ячейке снова таблица с грфическими элементами. S>Еслественно получается довольно большое дерево.
S>После того как она создана, обрабатываю нажание кнопки мыши и создаю еще одну ячейку ...
S>Вставляю ячейку с помошью insertBefore или appendChild. В момент вставки происходит задержка около секунды.
S>Возможно ли как то это победить?
возможно, что это связано с перерисовкой/пересчетом браузером таблицы.
Если это так, то бороться можно в следующих направлдениях:
1. сделать таблицу в display:none, чтобы браузеру не надо было ее рисовать
2. сделать таблице layout: fixed, чтобы браузеру не надо было считать
Re[2]: JavaScript - как увеличить скорость создания элемента
Здравствуйте, Rumata, Вы писали:
R>возможно, что это связано с перерисовкой/пересчетом браузером таблицы.
Я не понимаю зачем пересчитывать таблицу если она предстовляется в DOM как дерево, и соответственно на добавление нового узла дерева не должно по идее тратится много времени.
Но факт остается фактом при добавлении нового элемента в таблицу тормоза, при добавлении в пустой контейнер, который не входит в эту таблицу все нормально.
R>1. сделать таблицу в display:none, чтобы браузеру не надо было ее рисовать
Пробывал не помогло
R>2. сделать таблице layout: fixed, чтобы браузеру не надо было считать
Спасибо, попробывал, но видимого результата не дало.
Re[2]: JavaScript - как увеличить скорость создания элемента
Сейчас проверил еще раз и убедился что тормоза возникуют не только при добавлении нового елемента но так же и при изменинии любых атрибутов существующего элемента.
Re: JavaScript - как увеличить скорость создания элемента?
Код инициализации
Подзагрузка картинок происходит при их инициализации, так что здесь точно тормозов нет.
Я даже убирал все картинки и скорость оставалась та же.
У меня был опыт работы с таблицами и должен сказать, что скорость работы по сравнению с набором DIV'ов оставляет желать лучшего. С другой стороны, возможно, следует максимально точно и повсеместно "давать броузеру подсказки" в виде размеров ячеек, чтобы пересчитывать таблицу ему было легче. Любое изменение DOM влечёт за собой пересчёт (представление в браузере должно измениться).
С уважением,
Roman Hawk
Re[2]: JavaScript - как увеличить скорость создания элемента
Здравствуйте, romanhawk, Вы писали:
R>Очень любопытная статья по поводу скорости работы DOM: http://www.quirksmode.org/dom/innerhtml.html
R>У меня был опыт работы с таблицами и должен сказать, что скорость работы по сравнению с набором DIV'ов оставляет желать лучшего. С другой стороны, возможно, следует максимально точно и повсеместно "давать броузеру подсказки" в виде размеров ячеек, чтобы пересчитывать таблицу ему было легче. Любое изменение DOM влечёт за собой пересчёт (представление в браузере должно измениться). R>С уважением, R>Roman Hawk
Спасибо за статью, прочитал. Видно действительно лучше переделать на Div'ы