Задать вопрос
@Horus123

Как выделить текст в html?

Как выделить текст между html тегов? У меня есть готовая статья в виде html, необходимо при поиске выделять соответствующие слова.

Если текст не обрамлён html тегами, то всё замечательно. Но как реализовать выделение в таком тексте, например:

<p><b>Хабр</b> помоги найти ответ на вопрос</p>

Вот что есть сейчас:
Vue.js
search= ""

 let words = el.text.split(' ')
        for (let key in words) {
          if (words[key].includes(this.search)) {
            words[key] = "<mark>" + words[key] + "</mark>";
          }
        }
        el.text = n.join(" ");


Не могу правильно написать метод split.
  • Вопрос задан
  • 234 просмотра
Подписаться 2 Средний Комментировать
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
methods: {
  marked: (text, search) => search
    ? text.replace(RegExp(search.replace(/[\\^$|.*?+{}()[\]]/g, '\\$&'), 'gi'), '<mark>$&</mark>')
    : text,
},

<div v-html="marked(text, search)"></div>

Если выделение должно пересекать границы тэгов, то стоит взять какую-нибудь готовую библиотеку под это дело, такую как, скажем, mark.js (пример использования совместно с vue).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы