Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Java / JavaScript


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Java/JavaScript

Выпуск № 361
от 22.04.2007, 16:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 350, Экспертов: 40
В номере:Вопросов: 1, Ответов: 4


Вопрос № 82876: Здравствуйте! Вот у меня очередная задачка, (конечно, тоже извращенство...) Есть таблица данных, а я хочу вывести её на страницу как таблицу, и плюс кнопки для сортировки по разным колонкам с помощью Java Script. В приложен...

Вопрос № 82.876
Здравствуйте!

Вот у меня очередная задачка, (конечно, тоже извращенство...)

Есть таблица данных, а я хочу вывести её на страницу как таблицу, и плюс кнопки для сортировки по разным колонкам с помощью Java Script.

В приложении упрощённый вариант скрипта. Он также работает (я на нём алгоритм тестил), но есть несколько проблем.

1.1. во первых строки не связаны (когда сортируется первый столбец, второй остаётся не тронутым)
1.2. тоже самое касается фильтрации (по тем же самым причинам)
я не врубился как нужно правильно сортировать, или как тут нужно делать многомерный массив.

2. В большом варианте, записей очень много (сейчас реально более 2000, а предполагается ещё больше)
Так вот мой скрипт глохнет, в чём проблема? Памети не хватает или JavaScript неподдерживает такие объёмы?

Возможно есть более корректный вариант, кто знает подскажите пожалуйста! И pls на русском!

Приложение:

Отправлен: 16.04.2007, 23:48
Вопрос задал: Талипов А Н (статус: 3-ий класс)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 5)

Отвечает: Зенченко Константин Николаевич
Здравствуйте, Талипов А Н!

Постройте массив по другому:

var user = new Array()
i=0
user[i++]=new Array('nameA','telefonА','sexА')
user[i++]=new Array('nameB','telefonB','sexB')

теперь когда вы вносите любые изменения у Вас вся информация собрана в одном месте (не нужно считать номера изменяемых записей).
Удачи!
---------
И только наступив на грабли мы преобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: 10-ый класс)
Ответ отправлен: 17.04.2007, 10:55

Отвечает: Игорь Елизаров
Здравствуйте, Талипов А Н!
наверное для большого количества записей уже надо применять СУБД, например MySQL , а там и отбор по параметрам и сортировка делается уже стандартными запросами.

С уважением, Игорь
---------
Пользователь - тоже человек..
Ответ отправил: Игорь Елизаров (статус: 10-ый класс)
Ответ отправлен: 17.04.2007, 11:59

Отвечает: az.esm
Здравствуйте, Талипов А Н!
Можно организовать массив другим путем.
В приложении смотрите пример.
Эта организация массива решит вопрос №1.
Только для этого нужно будет написать свой алгоритм сортировки.
Можете использовать простой метод "пузырька". Описания алгоритмов сортировки поищите в google. Найдете много вариантов.

По поводу второго вопроса. У меня по такому же принципу работает база на 3400 позиций. С JScript никаких проблем не возникает.

И желательно базу держать не в HTML странице, а во внешнем текстовом файле и считывать его при каждой загрузки страницы.

Приложение:

---------
if (Something != "Идеально") Result = null; //JavaScript

Ответ отправил: az.esm (статус: 6-ой класс)
Ответ отправлен: 17.04.2007, 12:09

Отвечает: HookEst
Здравствуйте, Талипов А Н!
Посмотрите мою реализацию.
1. Для хранения записей не использую отдельных массивов(user[0],user[1]...),
все данные уже прописаны в HTML таблицы, там их и беру.

2. Для изменения структуры таблицы, использую не innerHTML, а методы таблицы(insertRow,insertCell...) и методы DOM(appendChild,insertBefore...)

3. для сортировки создаю(для каждого столбца) массивы ссылок на строки таблицы, которые и сортирую, используя sortFunction для разного типа данных(текстовые, числовые, даты...), (эти массивы кэшируются, поэтому создавать их нужно только один раз), потом меняю порядок строк согласно этим массивам.

на моей машине(не самой мощной)сортировка 2000 строк, первый раз занимает 4сек, все последующие 1сек.
смотрите приложение

Успехов.

Приложение:

Ответ отправил: HookEst (статус: Студент)
Ответ отправлен: 18.04.2007, 10:15
Оценка за ответ: 5
Комментарий оценки:
Спасибо ещё раз, ваш ответ мне помог.
Как уже писал на минифоруме я не знал про insertrow и insertCell, в моём случае это упрощает код, и действительно позволяет облегчить JavaScript.


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.50 (beta) от 15.04.2007
Яндекс Rambler's Top100

В избранное