Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Поиск текста на странице и замена на ссылки (https://javascript.ru/forum/misc/80367-poisk-teksta-na-stranice-i-zamena-na-ssylki.html)

zekin375 28.05.2020 09:54

Поиск текста на странице и замена на ссылки
 
Пытаюсь сделать что то типа облако тегов или как подсказки на wikepedia. Получаю весь список элементов и на каждой статье если нахожу нужное мне слово на которое создан тег подкрепляется ссылка.


const items = [
  {
    id: 1,
    name: 'повод',
    url: 'provod',
    tags: ['провода', 'проводов']
  },
  {
    id: 2,
    name: 'робот',
    url: 'robot',
    tags: ['роботы', 'роботов']
  },
]

const element = document.querySelector('.news__page') //

element.innerHTML = element.textContent
  .split(/\s/)
  .map(word => {
      const matchedItem = items.find(item => [item.name, ...item.tags].includes(word)) 
      return matchedItem ? `<a href='${matchedItem.url}'>${word}</a>` : word
  })
  .join(' ')


Данный способ работает но убирает всю разметку HTML, помогите пожалуйста решить

рони 28.05.2020 10:04

zekin375,
искать текстовые узлы внутри элемента и заменять их на три элемента, текст до , ссылка, текст после.
есть примеры на форуме, надо искать.

zekin375 28.05.2020 10:11

Задача решена

element.innerHTML = element.innerHTML

рони 28.05.2020 10:20

Цитата:

Сообщение от zekin375
Задача решена

обалдеть!!! :)

рони 28.05.2020 10:30

Цитата:

Сообщение от zekin375
element.innerHTML = element.innerHTML

так можно убить обработчики событий и нарушить структуру тегов если слово обнаружится внутри тега, например в title.


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