Javascript.RU

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

WebMachine,
let newValue = '<b>' +searchinput+ '</b>';
вместо этого должен быть regexp, надо искать по форуму, было 100500 раз.
Ответить с цитированием
  #12 (permalink)  
Старый 17.09.2023, 13:23
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

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>
Ответить с цитированием
  #13 (permalink)  
Старый 17.09.2023, 13:36
Кандидат Javascript-наук
Отправить личное сообщение для WebMachine Посмотреть профиль Найти все сообщения от WebMachine
 
Регистрация: 11.10.2016
Сообщений: 141

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

Последний раз редактировалось WebMachine, 17.09.2023 в 13:43.
Ответить с цитированием
  #14 (permalink)  
Старый 17.09.2023, 14:05
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,495

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

Всё это делаться должно совершенно иначе - через Range\Selectoin и с очень-очень аккуратным отношением к нодам, а не innerHTML поверх textContent.
__________________
29375, 35
Ответить с цитированием
  #15 (permalink)  
Старый 17.09.2023, 14:11
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

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

Всё это делаться должно совершенно иначе - через Range\Selectoin и с очень-очень аккуратным отношением к нодам, а не innerHTML поверх textContent.
https://javascript.ru/forum/misc/851...tml#post551674
Ответить с цитированием
  #16 (permalink)  
Старый 17.09.2023, 14:19
Кандидат Javascript-наук
Отправить личное сообщение для WebMachine Посмотреть профиль Найти все сообщения от WebMachine
 
Регистрация: 11.10.2016
Сообщений: 141

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

Всё это делаться должно совершенно иначе - через Range\Selectoin и с очень-очень аккуратным отношением к нодам, а не innerHTML поверх textContent.
Можете подсказать какое ни будь решение? Мне надо чтобы просто в результатах подсвечивалась фраза которую пользователь вбил в поиск а сами результаты были ограниченны в 250 символов. И чтобы эти искомые слова были видны в этих 250 символах. Просто сейчас через DLE используя метод {short-story limit="250"}, искомая фраза то видна то нет. В зависимости от её местоположения в тексте. а надо чтобы она была видна всегда и выделялась жирным
Ответить с цитированием
  #17 (permalink)  
Старый 17.09.2023, 14:20
Кандидат Javascript-наук
Отправить личное сообщение для WebMachine Посмотреть профиль Найти все сообщения от WebMachine
 
Регистрация: 11.10.2016
Сообщений: 141

Помогите хоть кто нибудь. Я заплачу 1000 руб !!! лижбы решить.
Ответить с цитированием
  #18 (permalink)  
Старый 17.09.2023, 15:37
Кандидат Javascript-наук
Отправить личное сообщение для WebMachine Посмотреть профиль Найти все сообщения от WebMachine
 
Регистрация: 11.10.2016
Сообщений: 141

В общем этот вариант подсвечивает все слова найденные на странице результатов поиска:
<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>


Но осталось как то решить задачу чтобы выводился именно тот кусок описания в котором есть данное словосочетание.
Ответить с цитированием
  #19 (permalink)  
Старый 17.09.2023, 18:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

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



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правило составить условие для поиска по базе используя mongoose? CryNet Node.JS 10 28.03.2022 14:18
Как сделать сложный запрос rita Node.JS 1 21.04.2021 00:17
Как правильно прочитать запрос? gsdev99 Node.JS 3 30.06.2019 04:15
Как же правильно вызывать запрос Ajax в функции? izumov AJAX и COMET 2 18.05.2019 17:43
Как отправить запрос используя прокси kometa2015 Javascript под браузер 1 30.08.2015 09:05