Вопрос № 82876: Здравствуйте!
Вот у меня очередная задачка, (конечно, тоже извращенство...)
Есть таблица данных, а я хочу вывести её на страницу как таблицу, и плюс кнопки для сортировки по разным колонкам с помощью Java Script.
В приложен...
Вопрос № 82.876
Здравствуйте!
Вот у меня очередная задачка, (конечно, тоже извращенство...)
Есть таблица данных, а я хочу вывести её на страницу как таблицу, и плюс кнопки для сортировки по разным колонкам с помощью Java Script.
В приложении упрощённый вариант скрипта. Он также работает (я на нём алгоритм тестил), но есть несколько проблем.
1.1. во первых строки не связаны (когда сортируется первый столбец, второй остаётся не тронутым)
1.2. тоже самое касается фильтрации (по тем же самым причинам)
я не врубился как нужно правильно сортировать, или как тут нужно делать многомерный массив.
2. В большом варианте, записей очень много (сейчас реально более 2000, а предполагается ещё больше)
Так вот мой скрипт глохнет, в чём проблема? Памети не хватает или JavaScript неподдерживает такие объёмы?
Возможно есть более корректный вариант, кто знает подскажите пожалуйста! И pls на русском!
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Талипов А Н!
Постройте массив по другому:
var user = new Array()
i=0
user[i++]=new Array('nameA','telefonА','sexА')
user[i++]=new Array('nameB','telefonB','sexB')
теперь когда вы вносите любые изменения у Вас вся информация собрана в одном месте (не нужно считать номера изменяемых записей).
Удачи!
--------- И только наступив на грабли мы преобретаем драгоценный опыт!
Отвечает: Игорь Елизаров
Здравствуйте, Талипов А Н!
наверное для большого количества записей уже надо применять СУБД, например 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.