Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как выделить искомый запрос в результатах поиска (https://javascript.ru/forum/dom-window/85481-kak-vydelit-iskomyjj-zapros-v-rezultatakh-poiska.html)

рони 17.09.2023 12:46

WebMachine,
let newValue = '<b>' +searchinput+ '</b>';
вместо этого должен быть regexp, надо искать по форуму, было 100500 раз.

рони 17.09.2023 13:23

WebMachine,
при условии что в искомом тексте нет тегов!!!
<!DOCTYPE HTML>
<html>

<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <script>
        document.addEventListener("DOMContentLoaded", () => {
            let searchinput = document.querySelector('#searchinput').value;
            const escapeRegExp = str => str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
            const createRegExp = str => new RegExp('(^|\\s+)(' +escapeRegExp(str) + '[a-zа-яё]*)','gim');
            let reg = createRegExp(searchinput); console.log(reg)
            const elements = document.querySelectorAll('p.fullpage');
            elements.forEach((element) => {
                element.innerHTML = element.textContent.replace(reg, '<b>$1$2<\/b>');
            });
        });
    </script>
</head>

<body>
    <input type="text" id="searchinput" value="ipsum">
    <p class="fullpage">Lorem ipsum, dolor sit amet consectetur adipisicing elit. Deleniti dignissimos omnis totam qui veritatis sunt laboriosam. Qui excepturi similique necessitatibus! Explicabo cum eius error facilis accusantium perferendis, voluptatibus rem, quas repudiandae
        quia obcaecati laborum alias a pariatur beatae dicta dolorum voluptas molestias recusandae dolores. Repellendus eligendi facere adipisci vel placeat id porro nisi, quisquam delectus aspernatur amet omnis perspiciatis sed similique. Impedit, ipsum!
        Voluptatum maxime sed fugit dolore nostrum. Facere nemo quam nesciunt necessitatibus officiis cumque aut itaque fugiat recusandae? Quos tempora laudantium autem natus, aut dicta ipsa, ab fugiat, voluptate voluptatem aliquid. Earum voluptates,
        est ad possimus esse ducimus ipsum!</p>
</body>

</html>

WebMachine 17.09.2023 13:36

Цитата:

Сообщение от рони (Сообщение 553289)
WebMachine,
при условии что в искомом тексте нет тегов!!!

Странно, но теперь вобще не выделяются слова: http://new.calangium.com/index.php?do=search, и как сделать так чтобы показывались именно те строки в которых есть это словосочетание? Надо ограничить кол-во отображаемых символов по умолчанию я делал через DLE методом: {short-story limit="250"}.
Но надо ограничить без метода: {short-story limit="250"}, чтобы данное слово было посередине 250 символов и выделено жирным шрифтом. Это последняя просьба Рони и с меня на пиво и чипсы!

Aetae 17.09.2023 14:05

Это всё такое говно, что говно-говно. Поломать страницу можно на раз-два.

Всё это делаться должно совершенно иначе - через Range\Selectoin и с очень-очень аккуратным отношением к нодам, а не innerHTML поверх textContent.

рони 17.09.2023 14:11

WebMachine,
пас, но на всякий случай для медитации
Цитата:

Сообщение от Aetae
Это всё такое говно, что говно-говно. Поломать страницу можно на раз-два.

Всё это делаться должно совершенно иначе - через Range\Selectoin и с очень-очень аккуратным отношением к нодам, а не innerHTML поверх textContent.

https://javascript.ru/forum/misc/851...tml#post551674

WebMachine 17.09.2023 14:19

Цитата:

Сообщение от Aetae (Сообщение 553291)
Это всё такое говно, что говно-говно. Поломать страницу можно на раз-два.

Всё это делаться должно совершенно иначе - через Range\Selectoin и с очень-очень аккуратным отношением к нодам, а не innerHTML поверх textContent.

Можете подсказать какое ни будь решение? Мне надо чтобы просто в результатах подсвечивалась фраза которую пользователь вбил в поиск а сами результаты были ограниченны в 250 символов. И чтобы эти искомые слова были видны в этих 250 символах. Просто сейчас через DLE используя метод {short-story limit="250"}, искомая фраза то видна то нет. В зависимости от её местоположения в тексте. а надо чтобы она была видна всегда и выделялась жирным

WebMachine 17.09.2023 14:20

Помогите хоть кто нибудь. Я заплачу 1000 руб !!! лижбы решить.

WebMachine 17.09.2023 15:37

В общем этот вариант подсвечивает все слова найденные на странице результатов поиска:
<script>
document.addEventListener("DOMContentLoaded", () => {
    let searchinput = document.querySelector('#searchinput').value;
    let newValue = '<b>' +searchinput+ '</b>';
    const elements = document.querySelectorAll('.fulldesc');
    elements.forEach((element) => {
        element.innerHTML = element.textContent.replaceAll(searchinput, newValue);
    });
});
</script>


Но осталось как то решить задачу чтобы выводился именно тот кусок описания в котором есть данное словосочетание.

рони 17.09.2023 18:33

Цитата:

Сообщение от WebMachine
Но осталось как то решить задачу чтобы выводился именно тот кусок описания в котором есть данное словосочетание.

сервер это должен делать.


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