![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| kizune |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 10.7.2007 Репутация: нет Всего: 9 |
Здравствуйте,все.
проблема такая:есть список
при клике на ссылку должна осуществляться сортировка списка по алфавиту. можно ли как-то воспользоваться этим методом?
если да,то как загнать в массив значения li? а если нет,каким способом посоветуете воспользоваться? заранее спасибо. |
||||
|
|||||
| dsCode |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 565 Регистрация: 8.9.2007 Где: Saint-Petersburg Репутация: 19 Всего: 26 |
kizune,
можно, почему нельзя? Так Вам же надо будет потом проапдейтить и html (т.е. отобразить элементы списка "по-новому"). Можно попробовать так: - собрать все элементы в объект - воспользоваться стандартной для объектов функцией sort(...), параметром которой передать Вашу функцию cmp(...) (т.е. критерий соритировки для sort(...)) - обновить html на основе отсортированного объекта (либо обновить innerHTML у <li>, либо уничтожить старые <li> и создать новые) |
|||
|
||||
| GIK |
|
|||
![]() Добрый человек ![]() ![]() Профиль Группа: Участник Сообщений: 985 Регистрация: 3.6.2005 Где: я только не небыв ал Репутация: 6 Всего: 14 |
Помню писал сам на С++, там все просто было, просто сравнивал символ и использовал два массива, время будет попробую сделать на JS
-------------------- Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!! Программирование - это не деятельнось! Программирование - это состояние души! Бог - самый крутой программист. |
|||
|
||||
| kizune |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 10.7.2007 Репутация: нет Всего: 9 |
не получается,может я какой момент упускаю?
Это сообщение отредактировал(а) kizune - 23.10.2007, 17:02 |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 49 Всего: 401 |
Для алфавитной сортировки не нужно - она по умолчанию. Упускаете: innerHTML - не массив, поэтому не имеет метода sort(). Предлагаю вариант средствами DOM (проход циклом по элементам <li> внутри списка, создание массива текстов и словаря текст-элемент, сортировка массива текстов и перестройка порядка элементов по отсортированному массиву с помощью словаря):
Конечно, это решение не идеально (в частности, никак не оптимизировано кол-во перестановок элементов), но для небольшого списка, имхо, вполне сгодится... -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| Castro |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 353 Регистрация: 31.8.2007 Где: Украина Репутация: нет Всего: 5 |
Хорошее решение
|
|||
|
||||
| kizune |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 10.7.2007 Репутация: нет Всего: 9 |
спасибо большое.
а как быть если список большой,элементов этак на двадцать? Это сообщение отредактировал(а) kizune - 29.10.2007, 11:34 |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 49 Всего: 401 |
kizune, с двадцатью, имхо, проблем и так не будет. Проверил на списке в 94 строки - на пятилетней машине (Duron-1200) сортирует за <20 мс в IE и Опере, за 60-70 - в FF. Вот уже для нескольких сотен надо всерьез думать об оптимизации...
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| kizune |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 10.7.2007 Репутация: нет Всего: 9 |
ясно,благодарю.последний вопрос если список будет таким
т.е если добавить в него ссылки,надосделать еще один цикл,который будет проходить сначала по <li>,а потом по <a>? |
|||
|
||||
| SelenIT |
|
||||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 49 Всего: 401 |
kizune, нет, цикл останется тот же. Надо будет только изменить строку
чтобы сортировка шла по текстовому содержимому <li> вне зависимости от тегов внутри него... -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
||||
|
|||||
| kizune |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 10.7.2007 Репутация: нет Всего: 9 |
спасибо,спасибо,спасибо
|
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 49 Всего: 401 |
Всегда пожалуйста
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |