Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Скрол таблицы до выбранной строки (https://javascript.ru/forum/dom-window/85742-skrol-tablicy-do-vybrannojj-stroki.html)

ne_proger 05.02.2024 14:10

Скрол таблицы до выбранной строки
 
Здравствуйте!

На странице есть таблица
<table class="table-with-border" id="dataList">
  <tr>
    <td>Поле 1</td>
    <td>Поле 2</td>
    <td>Поле 3</td>
    <td>Поле 4</td>
  </tr>
</table>


Есть скрипт фильтра по все отрисованной таблице
<script src="../assets/js/filter-table.js" type="text/javascript"></script>
  <script type="text/javascript">
    (function($) {
      $(document).ready(function() {
        $("#dataList").filterTable("#filter");
      });
    })(jQuery);
</script>


Этот скрипт при вводе текста в поле находит в таблице нужное и все остальные данные прячет.
В свою очередь в таблице текст в каждой строке является ссылкой. чтобы при выборе нужной строки она окрашивалась, чтобы пользователь понимал на какой строке остановился
<tr <?= $datas["id_item"] == $item_id  ? 'style="background: #aecaff;"' : "" ?>>
  <td>
	<a href="page.php?&item_id=<?= $datas["id_item"] ?>" style="color:#000">тут инфа из базы</a>
  </td>
  <td>
	<a href="page.php?&item_id=<?= $datas["comment"] ?>" style="color:#000">тут еще инфа из базы</a></a>
  </td>
</tr>


вопрос вот в чем. Мы нашли нужную строку по фильтру и кликнули ее. Страница обновилась и фильтр сбросился. при этом искомая строка выделена цветом, как и задумывалось. Но эта строка улетела куда-то далеко вниз.
Как после клика искомой строки и соответственно обновления страницы прокрутить страницу до этой самой строки?

voraa 05.02.2024 16:02

Надо навешивать на эту строку какой-нибудь класс. Например selected
Что то типа такого
<tr <?= $datas["id_item"] == $item_id  ? 'class="selected" style="background: #aecaff;"' : "" ?>>

А потом когда страница загрузится, найти эту строку по классу и скролиться к ней
const selrow = document.querySelector('.selected');
selrow?.scrollIntoView();


Часовой пояс GMT +3, время: 20:57.