在html标签之间突出显示(HTML,JavaScript,ReactJS)

时间:2019-03-26 10:08:50

标签: javascript html reactjs

我的程序中有一个API调用,结果是一个HTML文档。我必须将API结果中的HTML代码显示到浏览器中。我还从API获得了两个整数值(例如,start_point和end_point)。我的要求是突出显示HTML文档中的文本。文本从start_point值到end_point值突出显示。 假设以下HTML代码来自我的API

<section>
    <p>Lorem ipsum dolor init </p>
    <p>Lorem ipsum dolor init </p>
      <div>
        <p>Lorem ipsum dolor init </p>
        <p>Lorem ipsum dolor init </p>
      </div>
    <p>Lorem ipsum dolor init </p>
    <p>Lorem ipsum dolor init </p>
  </section>

现在考虑 start_point = 16 end_point = 32

因此,根据我的要求,由于start_point为16且end_point为32,因此计数从

标记的“ <”开始,高亮从Lorem的“ r”开始,并在init的“ i”结束在

标记中。因此,上面的html会在浏览器中显示如下:

Lo rem ipsum dolor i nit

Lorem ipsum dolor初始化

Lorem ipsum dolor初始化

Lorem ipsum dolor初始化

Lorem ipsum dolor初始化

Lorem ipsum dolor初始化

但是现在考虑以下情况:start_point在某个标签的中间,而end_point在同一标签的关闭之后。

例如,考虑 starting_point = 30 end_point = 50 。因此,我的HTML高亮应如下所示:

Lorem ipsum dolo r init

Lor em ipsum dolor初始化

Lorem ipsum dolor初始化

Lorem ipsum dolor初始化

Lorem ipsum dolor初始化

Lorem ipsum dolor初始化

有什么办法可以做到这一点?

目前我正在使用这样的JavaScript代码:


html.slice(0, start_point) + `<span id="highlightText">` + html.slice(start_point + 25, end_point) +`</span>` + html.slice(end_point);

此处需要25个空间,这就是为什么我在第二个切片中添加了25个空间的原因。然后为该id为“ highlightText”的跨度提供背景色。由于我必须关闭容器标签内的span标签,因此无法正常工作。我不想使用jQuery,所以请提出纯JavaScript的答案。

1 个答案:

答案 0 :(得分:0)

最后,我找到了解决方案。 MarkJS帮助我实现了实际需要的东西。即使它跨越HTML标签,它也可以处理文本的突出显示。一个解决我问题的完美解决方案。