Класс Vanilla JS для выделения результатов поиска в текстовой области, сохраняя при этом функциональность области.
Поскольку невозможно стилизовать текст в текстовой области, поскольку это не HTML, на помощь приходит этот класс, позволяющий выделить любой текст в текстовой области. Например, в результатах поиска.
Его использование очень просто: создайте экземпляр класса для нужной вам текстовой области и вызовите метод поиска, чтобы выделить текст, который вы передаете в первом аргументе. Второй аргумент является необязательным и принимает логическое значение, которое, если оно истинно, сделает поиск чувствительным к регистру. По умолчанию регистр нечувствителен. Последний аргумент также принимает логическое значение, которое, если оно истинно, будет выполнять поиск по слову. В противном случае это бесплатный поиск, где можно найти любую часть слова.
Добавьте в проект следующие файлы:
let tarea = document . getElementById ( 'txt' ) ;
let hilite = new textHighlight ( tarea ) ;
let searchResult = 'Some Expression' ;
let sens = true ; // Case sensitive. Optional, default: false
let word = true ; // Perform a words only search. Optional, default: false
hilite . search ( searchResult , sens , word ) ;
Чтобы узнать, сколько вхождений было найдено, используйте:
let count = hilite . count ( ) ;
Вы можете перемещаться вперед и назад по выделенным результатам, используя методы «Предыдущий» и «Следующий». Эта навигация циклична, это означает, что при достижении конца следующий вызов вернет вас к началу и наоборот. Пример ниже:
let btnPrev = document . getElementById ( 'prev' ) ;
let btnNext = document . getElementById ( 'next' ) ;
btnPrev . addEventListener ( 'click' , hilite . prev ) ;
btnNext . addEventListener ( 'click' , hilite . next ) ;
Если вам нужно очистить блики, вызовите методclear.
hilite . clear ( ) ;
Когда он выходит за пределы области видимости, просто вызовите метод уничтожения, и все будет так, как было до создания экземпляра.
hilite . destroy ( ) ;
Этот класс был вдохновлен плагином JQuery для выделения внутри текстовой области от Lonekorean. По сути, мне нужна была аналогичная функциональность для проекта, но я не хотел включать JQuery только для этого и не нашел другого достаточно хорошего кода.
Основная цель здесь заключалась в выделении результатов поиска в текстовой области.
Этот класс был протестирован в Chrome 117 и Firefox 118.
Этот проект лицензируется по лицензии MIT.