У меня есть строка текста, которую я хочу сравнить с другой строкой с кодом HTML. Проблема в том, что текст, с которым мне нужно сравнить его в HTML-коде, находится в разных тегах. Кроме того, если строка существует в коде HTML, я хочу заключить ее в тег <mark>.
Вот пример, который я использую:
var html = "<h1>This is a heading</h1><div class = "subtitle">and this is the subheading</div><p class = "small">this is some example text</p>";
var lookup = "is a heading and this is the subheading this is some";
var finalHtml = ""; //will contain new html
//Need to do some comparison and then add a <mark> tag around found string.
console.info(finalHtml);
//This should print "<h1>This <mark>is a heading</h1><div class = "subtitle">and this is the subheading</div><p class = "small">this is some</mark> example text</p>"
Для этого я использую Javascript / Jquery.
@Rory McCrossan - как я могу выделить этот текст с помощью HTML, не сделав его недействительным?
Кроме того, как только я удалю HTML и проведу сравнение, как я могу добавить выделение, а затем снова превратить его в HTML с исходными тегами и т. д.?
Вам нужно будет разделить mark между элементами, например: <h1>This <mark>is a heading</mark></h1><div class = "subtitle"><mark>and this is the subheading</mark></div><p class = "small"><mark>this is some</mark> example text</p>"



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Это поможет только поиск по вашему запросу в html (то есть без маркировки). Я удалил теги-пробелы, а затем проверил.
var html = '<h1>This is a heading</h1><div class = "subtitle">and this is the subheading</div><p class = "small">this is some example text</p>';
//remove html tags & spaces.
cleanHtml = html.replace(/</?[^>]+(>|$)/g, "").replace(/\s/g,"");
var lookup = "is a heading and this is the subheading this is some";
lookup = lookup.replace(/\s/g,'');
if (cleanText.includes(lookup)){
//match found
}
Перед сравнением вам необходимо удалить HTML-код. тем не мение следует отметить, что желаемый результат недействителен, поскольку элемент
<mark>нарушает элементыh1иp.