Визуальный фильтр HTML таблицы с помощью JS, Код внутри, нужна помощь в оптимизации |
Здравствуйте Гость [ Вход | Регистрация ] | Форум в сети 6829-й день
Шановні користувачі! Запрошуємо вас до офіційного телеграм-канала 0day Community. Тут ви зможете поспілкуватися одне з одним та дізнатися про останні новини щодо роботи ресурса, поставити запитання до адміністрації, тощо. Перейти до телеграм-канала можна відсканувавши QR-код або натиснувши на посилання: @zeroday_ua |
Визуальный фильтр HTML таблицы с помощью JS, Код внутри, нужна помощь в оптимизации |
mzk |
Mar 27 2020, 8:26
Пост
#1
|
Репутация: 83 Cтаршой Группа: Пользователи Сообщений: 673 С нами с: 27-February 08 |
Привет
В общем, есть таблица с множеством колонок строк. Строки нужно фильтровать по статусу для визуализации. Я нашел следующее решение, которое отлично работает, но... эти фильтры не зависимы друг от друга. То есть, если я выберу фильтр FilterLogistics() он фильтрует по 8-й колонке, а после него выберу FilterStatus(), то все отфильтрованное с помощью FilterLogistics() сбросится и применится только FilterStatus() Не могу понять, как их зацепить вместе? » Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... « Сам хедер в таблице: » Нажмите, чтобы показать спойлер - нажмите опять, чтобы скрыть... « |
phpkiev |
Mar 27 2020, 10:44
Пост
#2
|
Репутация: 308 Ветеран Группа: Пользователи Сообщений: 5 193 С нами с: 24-November 07 |
О Боги.. Вы серъёзно? Рисуете простыню HTML через echo? А зачем? Даже если вам чужд MVC подход, вы можете этот хтмл тупо встроить как есть, а чтоб не загромождать рнр код - то подключить его через include() - это ж гораздо удобней и проще саппортить будет.
А по основному вопросу - ну так это ж очевидно. Если оставить за кадром тот факт, что фильтрация таблицы на клиенте средствами JS выглядит мягко говоря странным решением - то посмотрите, что вы делаете. У вас два одинаковых метода, которые делают одно и то-же, но на разных колонках. А именно - при вызове каждый этот метод проверяет условие в строке таблицы, и при выполнении оного присваивает свойству display значение "", а если условие не выполняется, то прячет строчку через display = "none". Соотв. при этом если к таблице уже был применён фильтр ранее на другую колонку - он будет перезатёрт. Я вижу несколько вариантов решения этой задачи на JS, но это будут костыли, т.к. при достаточно большом наборе данных вы очень просто и быстро забъёте процессор клиентской машины. Такие задачи обычно решают иначе - вебформа собирает значения фильтров и отправляет их на бакенд, а уже там проводится фильтрация и сортировка и на клиент присылается уже готовый к отображению набор данных. Это можно сделать через AJAX запрос, чтоб не перегружать страничку. |
Упрощённая версия | Сейчас: 25th November 2024 - 12:47 |
Сайт не розміщує електронні версії творів, а займається лише колекціонуванням та каталогізацією посилань, що публікуються нашими користувачами. Якщо Ви є правовласником якоїсь частини опублікованого матеріалу та не бажаєте, щоб посилання на нього знаходилось в нашому каталозі, зв’яжіться з нами і ми видалимо його. Файли для обміну надані користувачами сайту і адміністрація не несе відповідальності за їх вміст. |