Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 08.11.2018, 14:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от Malleys
В чём прикол?
в недостатке понимания и знаний.
Сообщение от Malleys
Эту сортировку можно организовать так, чтобы ещё потом не нужно было разворачивать массив.
это понятно.
Ответить с цитированием
  #12 (permalink)  
Старый 27.09.2019, 10:07
Аспирант
Отправить личное сообщение для denis_kontarev Посмотреть профиль Найти все сообщения от denis_kontarev
 
Регистрация: 01.04.2018
Сообщений: 46

А можно ли сделать чтоб поиск шел не по <tbody> , а допустим по какому либо другому тегу <table>?

Последний раз редактировалось denis_kontarev, 27.09.2019 в 10:30.
Ответить с цитированием
  #13 (permalink)  
Старый 27.09.2019, 10:41
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Сообщение от denis_kontarev
А можно ли
???
Ответить с цитированием
  #14 (permalink)  
Старый 27.09.2019, 10:47
Аспирант
Отправить личное сообщение для denis_kontarev Посмотреть профиль Найти все сообщения от denis_kontarev
 
Регистрация: 01.04.2018
Сообщений: 46

Я и спрашиваю есть ли такая возможность?)
У меня стоит фильтр по буквам "А-Я", который работает по <tfoot> и числовой фильтр, который по <tbody>, но вместе эти теги конфликтуют и не получается задействовать сразу два фильтра
Ответить с цитированием
  #15 (permalink)  
Старый 27.09.2019, 10:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

denis_kontarev,
не понимаю.
Ответить с цитированием
  #16 (permalink)  
Старый 27.09.2019, 11:04
Аспирант
Отправить личное сообщение для denis_kontarev Посмотреть профиль Найти все сообщения от denis_kontarev
 
Регистрация: 01.04.2018
Сообщений: 46

Попробую подробно описать.
Первый фильтр делает поиск по тегу <tfoot> введенные буквы (слова) и при совпадении оставляет нужную информацию.

$(document).ready(function(){
$("#teams_filter").keyup(function(){
_this = this;
$.each($("#table_search tfoot"), function() {
if($(this).text().toLowerCase().indexOf($(_this).val().toLowerCase()) === -1)
$(this).hide();
else
$(this).show();                
});
});
});
<tfoot>.......</tfoot>
<tfoot>.......</tfoot>
<tfoot>.......</tfoot>

А второй фильтр сортирует таблицу по числовому значению от меньшего к большему по тегу <tbody>
document.addEventListener('DOMContentLoaded', () => {
const getSort = ({ target }) => {
    const order = target.dataset.order = -(target.dataset.order || -1);
    const index = [...target.parentNode.cells].indexOf(target);
    const collator = new Intl.Collator(["en", "ru"], { numeric: true });
    const comparator = (index, order) => (a, b) => order * collator.compare(
    a.children[index].innerHTML,
    b.children[index].innerHTML);
    const tBody = target.closest("table").tBodies[0];
    let trs = [...tBody.rows].filter((el, i) => i % 2 == 0);
    trs.sort(comparator(index, order));
    trs.forEach(el => {
    const next = el.nextElementSibling;
    tBody.append(...[el,next])
    });
    for (const cell of target.parentNode.cells)
    cell.classList.toggle("sorted", cell === target);
};
document.querySelector('.tsort thead').addEventListener('click', getSort)
})

Так вот как сделать чтоб фильтр начинал поиск не по <tbody>, а по тегу <table>

Так как вместе эти фильтры конфликтуют и работает только один из них.
Ответить с цитированием
  #17 (permalink)  
Старый 27.09.2019, 11:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

denis_kontarev,
сделайте макет, структуру вашей таблицы, с минимумом данных, только для примера.
Ответить с цитированием
  #18 (permalink)  
Старый 27.09.2019, 11:21
Аспирант
Отправить личное сообщение для denis_kontarev Посмотреть профиль Найти все сообщения от denis_kontarev
 
Регистрация: 01.04.2018
Сообщений: 46

<input type="text" id="teams_filter" placeholder="Поиск по таблице">

<table class="proanaliz-table tsort" id="table_search">

   <thead>
      <tr>
         <th class="sort">Начало</th>
         <th class="sort">Команды</th>
         <th class="sort">1</th>
         <th class="sort">X</th>
         <th class="sort">2</th>
         <th class="sort">TIP</th>
      </tr>
   </thead>
   
   <tfoot>
      <tr>
         <td>01:00</td>
         <td>>Спортиво Лукеньо - Депортиво Сантани</td>
         <td>2.63</td>
         <td>3.24</td>
         <td>2.99</td>
      </tr>

      <tr>
         <td colspan="6">
            <a href="#" class="spoiler-trigger"><span>Открыть подробную информацию</span></a>	
            <div class="spoiler-block">
               <table class="proanaliz-table">
                  <tr>
                     <td>04:00</td>
                     <td>>Палмейрас - ЦСА</td>
                     <td>1.19</td>
                     <td>2.56</td>
                     <td>3.98</td>
                  </tr>
               </table>
            </div>
         </td>
      </tr>
   </tfoot>
   
</table>
Ответить с цитированием
  #19 (permalink)  
Старый 27.09.2019, 12:12
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

сортировка и фильтрация tfoot table
denis_kontarev,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  @import url('https://fonts.googleapis.com/css?family=Roboto:400,400i,500,500i,700');
body {
    font-family: Roboto;
}

table {
    border-collapse: collapse
}

td, th {
    border: 2px solid red;
    width: 150px;
    height: 40px;
    text-align: center;
}

th {
    cursor: pointer;
    user-select: none;
}

th.sorted[data-order="-1"]::after {
    content: "▼"
}

th.sorted[data-order="1"]::after {
    content: "▲"
}


tfoot.hide{
    display: none;
}


.spoiler-trigger + div {
    display: none;
}
.spoiler-trigger.open + div {
    display: block;
}
</style>

  <script>
document.addEventListener('DOMContentLoaded', () => {
    const table = document.querySelector('.tsort');
    const ArrayTfoot = [...table.querySelectorAll('tfoot')];
    const getSort = ({target}) => {
        const order = target.dataset.order = -(target.dataset.order || -1);
        const index = [...target.parentNode.cells].indexOf(target);
        const collator = new Intl.Collator(["en", "ru"], {numeric: true});
        const comparator = (index, order) => (a, b) => order * collator.compare(
            a.querySelector('tr').children[index].innerHTML,
            b.querySelector('tr').children[index].innerHTML);
        ArrayTfoot.sort(comparator(index, order));
        table.append(...ArrayTfoot);
        for (const cell of target.parentNode.cells)
            cell.classList.toggle("sorted", cell === target);
    };
    document.querySelector('.tsort thead').addEventListener('click', getSort);
    const inputFilter = document.querySelector('#teams_filter');
    inputFilter.addEventListener('input', () => ArrayTfoot.forEach(tfoot => {
        const text = tfoot.textContent.toLowerCase(),
            val = inputFilter.value.trim().toLowerCase(),
            hide = val && text.indexOf(val) === -1;
        tfoot.classList.toggle('hide', hide)
    }))
    document.addEventListener('click', event => {
    const target = event.target.closest('.spoiler-trigger');
    if(target) {
    event.preventDefault();
    target.classList.toggle('open')
    }
    })

})
</script>
</head>

<body>
<input type="text" id="teams_filter" placeholder="Поиск по таблице">

<table class="proanaliz-table tsort" id="table_search">

   <thead>
      <tr>
         <th class="sort">Начало</th>
         <th class="sort">Команды</th>
         <th class="sort">1</th>
         <th class="sort">X</th>
         <th class="sort">2</th>
         <th class="sort">TIP</th>
      </tr>
   </thead>

   <tfoot>
      <tr>
         <td>01:00</td>
         <td>>Спортиво Лукеньо - Депортиво Сантани</td>
         <td>2.63</td>
         <td>3.24</td>
         <td>2.99</td>
      </tr>

      <tr>
         <td colspan="6">
            <a href="#" class="spoiler-trigger"><span>Открыть подробную информацию</span></a>
            <div class="spoiler-block">
               <table class="proanaliz-table">
                  <tr>
                     <td>04:00</td>
                     <td>>Палмейрас - ЦСА</td>
                     <td>1.19</td>
                     <td>2.56</td>
                     <td>3.98</td>
                  </tr>
               </table>
            </div>
         </td>
      </tr>
   </tfoot>
   <tfoot>
      <tr>
         <td>08:00</td>
         <td>>индия</td>
         <td>2.63</td>
         <td>3.24</td>
         <td>2.99</td>
      </tr>

      <tr>
         <td colspan="6">
            <a href="#" class="spoiler-trigger"><span>Открыть подробную информацию</span></a>
            <div class="spoiler-block">
               <table class="proanaliz-table">
                  <tr>
                     <td>04:00</td>
                     <td>>Палмейрас - ЦСА</td>
                     <td>1.19</td>
                     <td>2.56</td>
                     <td>3.98</td>
                  </tr>
               </table>
            </div>
         </td>
      </tr>
   </tfoot>
</table>


</body>
</html>
Ответить с цитированием
  #20 (permalink)  
Старый 27.09.2019, 12:42
Аспирант
Отправить личное сообщение для denis_kontarev Посмотреть профиль Найти все сообщения от denis_kontarev
 
Регистрация: 01.04.2018
Сообщений: 46

Рони в очередной раз огромное спасибо!!!! Работает идеально!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как очистить часть страницы для повторной загрузки таблицы? Vlad_Gera Элементы интерфейса 1 21.03.2017 22:42
Какие существуют библиотеки или алгоритмы генерации индексов для сортировки по-порядк Shitbox2 Общие вопросы Javascript 10 14.07.2015 13:32
Функция для дозагрузки контента Wahtel Ваши сайты и скрипты 3 06.01.2015 18:05
Одна функция для всех тегов по одному событию antsivash Общие вопросы Javascript 1 22.10.2012 00:18
Функция для jQuery qwermjk Общие вопросы Javascript 4 25.01.2011 09:56