我正在尝试手动选择文字。用于窗口选定文本的window.getSelection().getRangeAt(0);
行。但是我希望这个由我预选。
foo=function()
{
var selection= "Lorem ipsum dolor"; // Instead of this line window.getSelection().getRangeAt(0);
var selectedText = selection.extractContents();
var span= document.createElement("span");
span.style.backgroundColor = "yellow";
span.appendChild(selectedText);
selection.insertNode(span);
}
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<input type="button" onclick="foo();" value="FOO"/>
答案 0 :(得分:0)
有github项目findAndReplaceDOMText。一个可能有帮助的javascript库:它在给定的DOM节点中搜索正则表达式匹配,并用您可以指定的节点或文本替换或包装每个匹配。
您还可以使用window.find()
/ createTextRange
。 This answer显示了如何做到这一点。它将匹配跨越元素边界的文本,并使用document.execCommand()
为您突出显示。
最后 - 如果我查看您的示例并且您只想替换文本节点的特定片段 - 您可以使用这样的正则表达式:
element.innerHTML = element.innerHTML.replace(
/Lorem ipsum dolor/gi,
'<span class="f">$0</span>'
);