编辑:我在这篇文章中发现了一个很好的解决方案Remove highlight added to selected text using JavaScript?
我正在编写一个脚本来突出显示文本。我正在使用<span>
标签。这部分很简单,但现在我遇到了一个问题。当突出显示包含不同的节点时,我需要在父关闭之前关闭<span>
标记,然后在新节点中再次打开de <span>
。这不是一个很好的解释所以我举了一个例子:
<body>
<p id="0">Lorem ipsum</p>
<div id="1">dolor sit amet</div>
</body>
我选择突出显示:
ipsum</p><div id="1">dolor sit
然后我必须在<span>
之前关闭</p>
,然后以编程方式在<div>
之后打开。任何想法我该怎么办?我更喜欢使用纯JavaScript来完成所有脚本,但是我们将不胜感激。
这是我强调的功能:
function surroundSelection(element) {
if (window.getSelection)
{
var sel = window.getSelection();
if (sel.rangeCount)
{
console.log (sel);
var range = sel.getRangeAt(0).cloneRange();
range.surroundContents(element);
sel.removeAllRanges();
sel.addRange(range);
}
}
}
其中元素将是标记(在我的情况下为<span>
)
这就是我所拥有的,仍然存在突出显示不同节点的问题 http://jsfiddle.net/nacles/4L6d57bs/
答案 0 :(得分:0)
在您的示例中,您必须在代码的每个部分上启动不同的spam
:
<span>ipsum</span></p><div id="1"><span>dolor sit</span>
所以对你来说,只需在开头放一个span
,然后寻找字符串的结尾或者&#39;&lt;&#39;如果标签像
那样打开,那么请注意有一个嵌套的标签块,如果标签是接近的,那么你只需要一个结束范围。
有很多案例,但我认为并不是很困难。