【发布时间】:2014-11-11 18:44:35
【问题描述】:
编辑:我在这篇帖子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
然后我必须以编程方式在</p> 之前关闭<span> 并在<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/
【问题讨论】:
-
将显示您想要的任何类型的预览或示例...
标签: javascript html