DOM: как лучше поступить
От: vadimchen Россия  
Дата: 15.01.07 06:41
Оценка:
Привет,

Мне необходимо разработать AJAX-контрол, grid/three с динамической подгрузкой
содержимого узлов по клику. Элементов, в итоге, может быть довольно много.

В принципе, proof-of-concept я уже сделал, используя Mochikit. Вопрос, какой подход
будет более правильный — завести, например, JS — массив, содержащий все пункты меню,
какждый раз его обходить и строить таблицу и перерисовывать грид каждый раз,

или можно работать напрямую с DOM таблицы, представляющей грид, и по клику на пункты
меню делать appendChild или removeChild, в зависимости от того, разворачиваем мы пункт
или сворачиваем. Пока сделал второй вариант, но что-то меня в нем настораживает, да и
получилось довольно громоздко — так как для каждого элемента все равно надо хранить
ссылки на его подэлементы и обходить их и удалять соответствующие узлы из DOM. Код получается
мутноватый и чреватый ошибками.

Как быть? На всякий случай скажу, что это мой практически первый серьезный опыт
с DHTML/JS.
---
http://vadimchen.livejournal.com
Re: DOM: как лучше поступить
От: Alexey Shtokalo Россия http://alexey.shtokalo.net
Дата: 15.01.07 10:39
Оценка:
Здравствуйте, vadimchen

Рекомендую посмотреть на реализацию ActiveWidgets — www.activewidgets.com — очень хороший и гибкий компонент, в том числе с описанными вами функциями.
Замечу также что создавать сразу все строки таблицы, при определенном количестве — прямой путь к зависанию браузера и жестким тормозам.
Re[2]: DOM: как лучше поступить
От: vadimchen Россия  
Дата: 15.01.07 10:56
Оценка:
AS>Рекомендую посмотреть на реализацию ActiveWidgets — www.activewidgets.com — AS>очень хороший и гибкий компонент, в том числе с описанными вами функциями.

Спасибо, смотрю, но оно здоровенное и явно не рассчитанное на то, что его код будут изучать (еще и обфусцированное).


AS>Замечу также что создавать сразу все строки таблицы, при определенном количестве — AS>прямой путь к зависанию браузера и жестким тормозам.


Ага, то есть остается один путь — работать с DOM таблицы и добавлять/удалять элементы.

Такой еще вопрос — нормально ли устанавливать свои атрибуты в элементах DOM?
Является ли это общепринятой практикой? Очень не хочется заводить для хранения своей служебной информации массивы и искать по ним.

Я так понимаю, нормальных хэшей в JS нет?
---
http://vadimchen.livejournal.com
Re: DOM: как лучше поступить
От: DarkRebel  
Дата: 15.01.07 11:41
Оценка:
Имхо, лучше пусть в памяти хранятся — перерисовка с нуля будет еще тяжелее
Кстати, советую попробовать обойтись без removeChild. Можно просто скрывать ветку, не удаляя ее, используя style.
Т.о. и дерево будет целое и нагрузка поменьше.
Re[3]: DOM: как лучше поступить
От: DarkRebel  
Дата: 15.01.07 12:00
Оценка:
V>Я так понимаю, нормальных хэшей в JS нет?

можно работать с массивами как с хешами. последние версии браузеров это позволяют, за более ранние не ручаюсь.

var arr=new Array();
arr["qwe"]=123;
arr["asd"]=456;
arr["zxc"]=789;

for (var i in arr) {
    alert("Key: " + i + ", Value: " + arr[i]);
}


правда, все-таки полноценным хешем это назвать трудно. можно сделать через объекты, примерно как тут:
http://www.mojavelinux.com/articles/javascript_hashes.html
Re[4]: DOM: как лучше поступить
От: ddocker Россия www.codelab.ru
Дата: 07.02.07 12:09
Оценка:
Здравствуйте, DarkRebel, Вы писали:

DR>можно работать с массивами как с хешами. последние версии браузеров это позволяют, за более ранние не ручаюсь.


DR>
DR>var arr=new Array();
DR>arr["qwe"]=123;
DR>arr["asd"]=456;
DR>arr["zxc"]=789;

DR>for (var i in arr) {
DR>    alert("Key: " + i + ", Value: " + arr[i]);
DR>}
DR>

Только это уже не массив получается, а просто новые пропертя к этому объекту Array.
С таким же успехом можно и в любой другой объект javascript-а какие-угодно дополнительные поля добавить, массив как таковой он в javascript-е — здесь не при чем.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.