Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.05.2020, 09:54
Новичок на форуме
Отправить личное сообщение для zekin375 Посмотреть профиль Найти все сообщения от zekin375
 
Регистрация: 28.05.2020
Сообщений: 2

Поиск текста на странице и замена на ссылки
Пытаюсь сделать что то типа облако тегов или как подсказки на 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, помогите пожалуйста решить
Ответить с цитированием
  #2 (permalink)  
Старый 28.05.2020, 10:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

zekin375,
искать текстовые узлы внутри элемента и заменять их на три элемента, текст до , ссылка, текст после.
есть примеры на форуме, надо искать.
Ответить с цитированием
  #3 (permalink)  
Старый 28.05.2020, 10:11
Новичок на форуме
Отправить личное сообщение для zekin375 Посмотреть профиль Найти все сообщения от zekin375
 
Регистрация: 28.05.2020
Сообщений: 2

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

element.innerHTML = element.innerHTML
Ответить с цитированием
  #4 (permalink)  
Старый 28.05.2020, 10:20
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от zekin375
Задача решена
обалдеть!!!
Ответить с цитированием
  #5 (permalink)  
Старый 28.05.2020, 10:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от zekin375
element.innerHTML = element.innerHTML
так можно убить обработчики событий и нарушить структуру тегов если слово обнаружится внутри тега, например в title.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно модифицировать ссылки на странице Chmil Элементы интерфейса 7 02.08.2018 00:22
Поиск по странице Rishat1c jQuery 5 13.06.2017 02:28
поиск ссылки по тексту, который расположен между тагом <a> gpg10 jQuery 7 09.11.2014 21:58
Поиск текста на странице(JavaScript) Ogara Events/DOM/Window 0 29.12.2012 13:13
Поиск текста и замена krestiyaninov Общие вопросы Javascript 1 07.05.2008 13:30